【问题标题】:Extracting the first paragraph of an article using PHP使用 PHP 提取文章的第一段
【发布时间】:2013-01-13 08:12:02
【问题描述】:

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

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

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

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

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

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

现在正则表达式匹配&lt;p&gt;First Paragraph&lt;p&gt;SecondParagraph&lt;/p&gt;,但应该提取&lt;p&gt;First Paragraph&lt;p&gt;SecondParagraph&lt;/p&gt;&lt;/p&gt;

【问题讨论】:

    标签: php regex preg-match-all


    【解决方案1】:

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

    并建议你使用 Simple HTML DOM:

    http://simplehtmldom.sourceforge.net/

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

    【讨论】:

    • 这还是缺少最后的。
    • @Petah 使用第三方总是很糟糕,我不确定是否真的值得将它用于一个简单的一次性使用过程。
    • @OmidAmraei 我不确定您是否欣赏 HTML/XML 的详细复杂性。简单的 HTML DOM 是用于这种情况的更简单的库之一。如果没有,那么您可以使用Query PathDOMDocument。但正则表达式可能不是最好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多