0

我想使用 RegEx 和 PHP 提取文章的第一段。我开始写一个正则表达式如下:

'/<p([^>]+)>(.*)<\/p>/i'

这就是工作,但唯一的小错误是,虽然标记被缩小并在一行中,如下所示:

<p>First Paragraph</p><p>SecondParagraph</p>

它只是匹配所有<p>First Paragraph</p><p>SecondParagraph</p>.
另外,我知道一个段落不能在另一个段落中,但我无法控制用户写什么,所以他可能会做这样的事情,在这种情况下,RegEx 会返回意想不到的结果,如下所示:

<p>
    First Paragraph
    <p>SecondParagraph</p>
</p>

现在正则表达式匹配<p>First Paragraph<p>SecondParagraph</p>但应该提取<p>First Paragraph<p>SecondParagraph</p></p>.

4

1 回答 1

0

我参考了答案https://stackoverflow.com/a/1732454/268074

并建议您使用 Simple HTML DOM:

http://simplehtmldom.sourceforge.net/

str_get_html($string)->find('p')->plaintext;
于 2013-01-13T08:36:18.957 回答