【发布时间】:2015-04-16 10:27:19
【问题描述】:
我有这种字符串:
$string = "<strong>Blabla1</strong> Blaabla2<br /> Blaabla3 <strong>Blaabla4</strong> Blaabla5 Blaabla6<br /><br /> Blaabla7 <span style='color:#B22222;'>Blaabla8</span> Blaabla9";
我正在尝试用 preg_split 爆炸每个有 " " 或 "<br />" 的单词。
我的条件:
对于每个单词 (Blablax),我需要保留他的标签,例如 <strong>、<span>、<em>... 但在 <br /> 或更多 <br /> 之后拆分他
我试过了,感谢 stackoverflow 上的另一篇文章:
preg_split('/<br(\s\/)?>\K|\s/',$string,null,PREG_SPLIT_NO_EMPTY);
输出:
array (size=12)
0 => string '<strong>Blabla1</strong>' (length=24)
1 => string 'Blaabla2<br />' (length=14)
2 => string 'Blaabla3' (length=8)
3 => string '<strong>Blaabla4</strong>' (length=25)
4 => string 'Blaabla5' (length=8)
5 => string 'Blaabla6<br />' (length=14)
6 => string '<br' (length=3)
7 => string '/>' (length=2)
8 => string 'Blaabla7' (length=8)
9 => string '<span' (length=5)
10 => string 'style='color:#B22222;'>Blaabla8</span>' (length=38)
11 => string 'Blaabla9' (length=8)
对于index 6 和index 7(见上面的输出)和index 9 和index 10,一切都除了
我的期望:
array (size=12)
0 => string '<strong>Blabla1</strong>' (length=24)
1 => string 'Blaabla2<br />' (length=14)
2 => string 'Blaabla3' (length=8)
3 => string '<strong>Blaabla4</strong>' (length=25)
4 => string 'Blaabla5' (length=8)
5 => string 'Blaabla6<br /><br />' (length=14)
6 => string 'Blaabla7' (length=8)
7 => string '<span style='color:#B22222;'>Blaabla8</span>' (length=45)
8 => string 'Blaabla9' (length=8)
见index 5和index 7
如果我只有一个<br />,我的正则表达式可以工作,但如果有多个,就会出现错误...如果我有<span style...>,则同上
谢谢!
【问题讨论】:
-
试试
preg_split('/<br(\s\/)?>\K|\s/g',$string,null,PREG_SPLIT_NO_EMPTY); -
为什么在索引 1 处多了一个
<br />?它不存在于输入中。 -
@nhahtdh 我的错...我编辑了我的帖子...索引 1 处没有多余的
<br />... -
看看您对索引 7 的要求,我认为您最好使用 PHP 解析器。 stackoverflow.com/questions/3577641/…