欢迎访问宙启技术站
智能推送

利用php函数将HTML转换为PlainText

发布时间:2023-06-26 00:46:08

在开发 Web 应用时,我们经常需要使用到 HTML 页面来展示数据或用户界面。但有时我们需要将 HTML 转换为普通文本,以便于在其他应用或场景中使用。

针对这种需求,PHP 提供了许多函数可以实现 HTML 转普通文本的功能。接下来,我们将介绍一些常用的 PHP 函数,以及如何使用它们来实现 HTML 转普通文本的功能。

1. strip_tags 函数

strip_tags 函数是 PHP 中一种常用的将 HTML 转换为纯文本的方法。strip_tags 函数可以过滤掉 HTML 标签,只保留文本内容。如下代码:

$html = "<p>这是一段 <strong>加粗</strong> 的文本</p>";
$plainText = strip_tags($html);

上述代码中,strip_tags 函数接受一个包含 HTML 代码的字符串作为参数,并返回一个过滤掉 HTML 标签的纯文本字符串。在 $plainText 中将得到一段不含 HTML 标签的纯文本字符串:

这是一段 加粗 的文本

strip_tags 函数还可以指定要保留的标签。比如,如果我们希望保留 strong 标签,可以这样调用 strip_tags 函数:

$html = "<p>这是一段 <strong>加粗</strong> 的文本</p>";
$plainText = strip_tags($html, "<strong>");

在第二个参数中指定要保留的标签。这样,$plainText 变量中的文本将会是:

这是一段 <strong>加粗</strong> 的文本

2. htmlspecialchars_decode 函数

htmlspecialchars_decode 函数可将 HTML 实体编码转换回对应的字符。比如,将 &lt; 转换为 <,将 &amp; 转换为 &,等等。如下代码:

$html = "&lt;p&gt;Hello, &amp;world!&lt;/p&gt;";
$plainText = htmlspecialchars_decode($html);

上述代码中,$html 变量中包含了跨站脚本攻击防范中常用的一些 HTML 实体编码。htmlspecialchars_decode 函数会将这些实体编码转换为对应的字符。在执行完该函数后,$plainText 中的文本将会是:

<p>Hello, &world!</p>

需要注意的是,该函数只能解码 HTML 实体编码,不能将整个 HTML 转换成纯文本。

3. mb_convert_encoding 函数

mb_convert_encoding 函数是一个多字节字符集处理函数,可用于将 HTML 转换为纯文本。如下代码:

$html = '<h1>这是标题</h1><p>这是一段文字</p>';
$plainText = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');

在上述代码中,将 HTML 代码传递给了 mb_convert_encoding 函数,将其转换为实体编码形式。实体编码表示法是一种将字符编码为对应实体的方法,类似于 HTML 实体编码。

最后,我们再来介绍一种将 HTML 转换为纯文本的方式,即使用 DOMDocument 类的 textContent 属性。具体代码如下:

$html = "<h1>这是标题</h1><p>这是一段文字</p>";
$dom = new DOMDocument();
$dom->loadHTML($html);
$plainText = $dom->textContent;

在上述代码中,我们先创建了一个 DOMDocument 对象,然后将 HTML 字符串传递给其 loadHTML 方法。loadHTML 方法会将 HTML 字符串加载到 DOMDocument 对象中,以便后续对其进行处理。

在加载完 HTML 后,我们可以通过 textContent 属性获取 DOM 属性的文本内容。在 $plainText 变量中将得到一段不含 HTML 标签的纯文本字符串:

这是标题 这是一段文字

需要注意的是,使用 DOMDocument 类的方式虽然较为方便,但也较为消耗资源,不适用于处理大量 HTML 字符串。

综上所述,我们在 PHP 中可以使用 strip_tags 函数、htmlspecialchars_decode 函数、mb_convert_encoding 函数和 DOMDocument 类的 textContent 属性等方式将 HTML 转换为纯文本。需要根据实际情况选择最适合的方式来进行操作。