1

我为我的页面编写了一些简单的解析器,但遇到了一些问题。

HTML 文本:

<p>some text</p><p>another text</p>

如果我尝试使用类似的东西:

preg_split("#<p>#",$string);

我有一个没有 的结果<p>,这是非常非常糟糕的。(仅</p>存在)

也许我可以将此字符串拆分为数组,但不要删除</p>

4

2 回答 2

4

您可以使用此构造(?=<p>),它是正向前瞻零宽度断言。此模式不会消耗它匹配的文本。它只会找到<p>字符串之前的位置。这是示例:

preg_split("#(?=<p>)#",$string);
于 2009-10-15T14:36:17.450 回答
1

就像伊万说的,你应该使用(?=<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>
于 2009-10-15T14:55:03.540 回答