PHP将HTML转换为纯文本的高效正则方案

闻溪
闻溪
发布时间:2026-10-15| 5人浏览过
原创

本文将介绍如何利用 PHP 的正则替换功能,去除 HTML 文档中的标签、脚本及特殊符号,并将其中的通用实体转为对应的文本字符,从而获得干净的纯文本内容。

实现目标与核心逻辑

在处理网页爬虫或数据清洗任务时,经常需要将结构化的 HTML 文档转换为便于阅读和分析的纯文本。上述代码主要解决三个问题:

  1. 清理多余内容:移除 <script> 及其内部代码,以及所有非必要的 HTML 标签。
  2. 规范格式:消除多余的空白字符和换行符,保持文本连贯性。
  3. 还原实体:将 &amp;、&lt; 等通用 HTML 实体转换回可读的特殊字符(如引号、尖括号等)。

具体操作步骤

第1步:定义搜索与替换数组

使用关联数组分别定义需要匹配的模式($search)和替换后的结果($replace)。这能确保处理顺序和对应关系清晰可控。

<?php
// $document 应包含一个 HTML 文档。
// 本例将去掉 HTML 标记,javascript 代码
// 和空白字符。还会将一些通用的
// HTML 实体转换成相应的文本。

$search = array (
    "'<script[^>]*?>.*?</script>'si", // 去掉 javascript
    "'<[\/\!]*?[^<>]*?>'si",      // 去掉 HTML 标记
    "'([\r\n])[\s]+'",         // 去掉空白字符
    "'&(quot|#34);'i",         // 替换 HTML 实体
    "'&(amp|#38);'i",
    "'&(lt|#60);'i",
    "'&(gt|#62);'i",
    "'&(nbsp|#160);'i",
    "'&(iexcl|#161);'i",
    "'&(cent|#162);'i",
    "'&(pound|#163);'i",
    "'&(copy|#169);'i",
    "'&#(\d+);'e"          // 作为 PHP 代码运行
);

$replace = array (
    "",
    "",
    "\\1",
    "\"",
    "&",
    "<",
    ">",
    " ",
    chr(161),
    chr(162),
    chr(163),
    chr(169),
    "chr(\\1)"
);
?>
  • 关键参数说明:
    - 前三个模式使用了 s 修饰符以支持点号匹配换行符,i 表示不区分大小写。
    - 最后一个模式使用了 e 修饰符,允许 $replace 中的 chr(\1) 被当作 PHP 代码执行,从而实现动态转换任意数字实体。

第2步:执行正则替换并获取结果

调用 preg_replace() 函数,传入上一步定义的数组,对原始 HTML 字符串进行处理。

$text = preg_replace ($search, $replace, $document);
?>

此时 $text 变量即为去除了脚本、标签和特殊格式后的纯文本。该方法在处理简单到中等复杂度的 HTML 片段时效率较高且易于维护。

注意事项

虽然该正则方案简洁有效,但面对极度复杂嵌套的 HTML 结构或含有大量自定义标签的场景,建议使用专门的 HTML 解析器(如 DOMDocument 或第三方库)以获得更稳定的解析结果。此外,正则 e 修饰符在部分新版 PHP 环境中已被废弃或需配置严格环境,使用时请注意兼容性。

以上就是将HTML转换成文本的详细内容,更多关于PHP转换技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。