使用PHP提取文章的第一段

时间:2013-01-13 08:12:02

标签: php regex preg-match-all

我想使用RegEx和PHP提取文章的第一段。我开始写下如下的RegEx:

'/<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>

现在,RegEx与<p>First Paragraph<p>SecondParagraph</p>匹配,但应提取<p>First Paragraph<p>SecondParagraph</p></p>

1 个答案:

答案 0 :(得分:0)

我引用了答案https://stackoverflow.com/a/1732454/268074

建议您使用Simple HTML DOM:

http://simplehtmldom.sourceforge.net/

str_get_html($string)->find('p')->plaintext;