mantis
V2EX  ›  PHP

求解,字符串按特殊字符进行拆分

By mantis at 2022 年 9 月 19 日 · 2478 次点击

字符串:

$str = "两个人的小森林有*2*个热点*爆*词你还未看(217054)";

按进行拆分,两个xx*中间的标记为 type=2,其他标记 type=1 ,期望结果如下:

[
    {
        "type": 1,
        "text": "两个人的小森林有"
    },
    {
        "type": 2,
        "text": "2",
    },
    {
        "type": 1,
        "text": "个热点",
    },
    {
        "type": 2,
        "text": "爆",
    },
    {
        "type": 1,
        "text": "词你还未看(217054)"
    }
]

求解,php 如何实现?

6 条回复
eason1874
   1
eason1874  
   2022 年 9 月 19 日
?又来问,差不多的问题
wdwwtzy
   2
wdwwtzy  
   2022 年 9 月 19 日
如果你问的是这个问题的话,那不是很简单
假如你*是成对出现的话,用* split 之后,type=2 永远会在奇数索引出现。

但是我猜你想问的不是这个问题。
huangzhe8263
   3
huangzhe8263  
   2022 年 9 月 19 日
不不不,看看 LZ 的发帖记录,问的就是这个问题。

建议还是先去学一下基本的知识再来问吧。
bytesfold
   4
bytesfold  
   2022 年 9 月 19 日
from pprint import pprint
data = r"两个人的小森林有*2*个热点*爆*词你还未看(217054)"
pprint([{'type': 1 if len(i) != 1 else 2, 'text': i} for i in data.split("*")])
bytesfold
   5
bytesfold  
   2022 年 9 月 19 日
打扰了,PHP..
laoyur
   6
laoyur  
   2022 年 9 月 19 日
regex 找出被星星夹着的部分的索引,然后所有分组都能抽取出来了

话说第一眼扫过你的原文,还以为是被和谐过的语句呢
© 2026 V2EX · 39ms · 3.9.8.5