我为我的页面编写了一些简单的解析器,但遇到了一些问题。
HTML 文本:
<p>some text</p><p>another text</p>
如果我尝试使用类似的东西:
preg_split("#<p>#",$string);
我有一个没有 的结果<p>
,这是非常非常糟糕的。(仅</p>
存在)
也许我可以将此字符串拆分为数组,但不要删除</p>
?
我为我的页面编写了一些简单的解析器,但遇到了一些问题。
HTML 文本:
<p>some text</p><p>another text</p>
如果我尝试使用类似的东西:
preg_split("#<p>#",$string);
我有一个没有 的结果<p>
,这是非常非常糟糕的。(仅</p>
存在)
也许我可以将此字符串拆分为数组,但不要删除</p>
?
您可以使用此构造(?=<p>)
,它是正向前瞻零宽度断言。此模式不会消耗它匹配的文本。它只会找到<p>
字符串之前的位置。这是示例:
preg_split("#(?=<p>)#",$string);
就像伊万说的,你应该使用(?=<p>)
. 只是想补充一点,你可以使用
var $Paragraphs = array_filter(preg_split("/(?=<p>)/", "<p>some text</p><p>another text</p>"));
这将是:
[1] => <p>some text</p>
[2] => <p>another text</p>