如何用PHP从HTML字符串中仅提取文本?

New*_* Co 10 php

我想只从php字符串中提取文本.

这个php字符串包含html代码,如标签等.

所以我只需要这个字符串中的简单文本.

这是实际的字符串:

<div class="devblog-index-content battlelog-wordpress">
<p><strong>The celebration of the Recon class in our second </strong><a href="http://blogs.battlefield.com/2014/10/bf4-class-week-recon/" target="_blank">BF4 Class Week</a><strong> continues with a sneaky stroll down memory lane. Learn more about how the Recon has changed in appearance, name and weaponry over the years&hellip;</strong></p>

<p>&nbsp;</p>

<p style="text-align:center"><a href="http://eaassets-a.akamaihd.net/battlelog/prod/954660ddbe53df808c23a0ba948e7971/en_US/blog/wp-content/uploads/2014/10/bf4-history-of-recon-1.jpg?v=1412871863.37"><img alt="bf4-history-of-recon-1" class="aligncenter" src="http://eaassets-a.akamaihd.net/battlelog/prod/954660ddbe53df808c23a0ba948e7971/en_US/blog/wp-content/uploads/2014/10/bf4-history-of-recon-1.jpg?v=1412871863.37" style="width:619px" /></a></p>
Run Code Online (Sandbox Code Playgroud)

我想从字符串中显示:

The celebration of the Recon class in our second BF4 Class Week continues with a sneaky stroll down memory lane. Learn more about how the Recon has changed in appearance, name and weaponry over the years…
Run Code Online (Sandbox Code Playgroud)

实际上这个文本将放在元描述标签中,所以我不需要元标记中的任何HTML.我怎么能这样做?关于这种技术的任何想法和想法?

Mil*_*Roo 42

你可以尝试:

echo(strip_tags($your_string));
Run Code Online (Sandbox Code Playgroud)

更多信息:http://php.net/manual/en/function.strip-tags.php

  • &lt;style&gt;很多 css&lt;/style&gt; 会搞砸这个。以及许多其他包含您不想要的文本的标签 (4认同)

Pau*_*nis 7

另一种选择是使用 Html2Text。它将比 strip_tags 做得更好,尤其是当您想解析复杂的 HTML 代码时。

从 HTML 中提取文本很棘手,因此最好的办法是使用为此目的构建的库。

https://github.com/mtibben/html2text

使用 Composer 安装:

composer require html2text/html2text
Run Code Online (Sandbox Code Playgroud)

基本用法:

$html = new \Html2Text\Html2Text('Hello, &quot;<b>world</b>&quot;');

echo $html->getText();  // Hello, "WORLD"
Run Code Online (Sandbox Code Playgroud)