【问题标题】:php: Get plain text from html - simplehtmldom or php strip_tags?php:从 html 获取纯文本 - simplehtmldom 还是 php strip_tags?
【发布时间】:2011-12-05 19:03:15
【问题描述】:

我正在寻找从 html 获取纯文本。我应该选择哪一个,phpstrip_tagssimplehtmldom明文提取?

simplehtmldom 的一个优点是支持无效的 html,这本身就足够了吗?

【问题讨论】:

  • 条形标签将为您提供所提供文档中的所有文本。如果您想要文档的一小部分,则使用 DOM 提取该部分。

标签: php extract web-scraping text-extraction simple-html-dom


【解决方案1】:

strip_tags 就足够了。

【讨论】:

    【解决方案2】:

    由于您提到的原因,您可能应该使用 smiplehtmldom,并且 strip_tags 也可能会在脚本/样式块中留下非文本元素,例如 javascript 或 css

    您还可以从未显示的元素中过滤文本 (inline style=display:none)

    也就是说,如果 html 足够简单,那么 strip_tags 可能会更快并且可以完成相同的任务

    【讨论】:

    • 我同意除了未显示的元素之外的所有内容。用例是如此之小,以至于除了 JavaScript 执行之后,没有人应该使用内联样式,看起来 OP 并不关心。
    【解决方案3】:

    从 HTML 中提取文本很棘手,因此最好的选择是使用 Html2Text 之类的库。它是专门为此目的而构建的。

    https://github.com/mtibben/html2text

    使用作曲家安装:

    composer require html2text/html2text
    

    基本用法:

    $html = new \Html2Text\Html2Text('Hello, &quot;<b>world</b>&quot;');
    
    echo $html->getText();  // Hello, "WORLD"
    

    【讨论】:

      【解决方案4】:

      如果您只想要页面的纯文本呈现,那么 strip_tags 更快更简单。但是,如果您想在此过程中对文本进行任何操作,从长远来看,simplehtmldom 会为您提供更好的服务。

      【讨论】:

        【解决方案5】:

        您可能还想删除斜杠 stripslashes()

        【讨论】:

          猜你喜欢
          • 2015-07-28
          • 1970-01-01
          • 2013-10-17
          • 1970-01-01
          • 2013-08-15
          • 2023-04-10
          • 1970-01-01
          • 2016-07-25
          • 1970-01-01
          相关资源
          最近更新 更多