
本文介绍使用 array_map() 结合 strip_tags() 从 HTML 锚点标签数组中高效提取纯文本内容,并通过 trim() 清理空白字符,最终获得干净的字符串数组。
本文介绍使用 `array_map()` 结合 `strip_tags()` 从 html 锚点标签数组中高效提取纯文本内容,并通过 `trim()` 清理空白字符,最终获得干净的字符串数组。
在 PHP 开发中,经常需要从一段包含 HTML 标签(如 <a></a>)的字符串数组中提取纯文本内容(即 innerHTML),而忽略所有标签结构。例如,你拥有如下含锚点标签的数组:
$arr = [
"<a href='#'> Value1 </a>",
"<a href='#'> Value2 </a>",
"<a href='#'> Value3 </a>",
];目标是获取仅包含 Value1、Value2、Value3 的新数组,且各元素前后无多余空格。
✅ 推荐解决方案:array_map() + strip_tags() + trim()
最简洁、高效且符合函数式编程风格的方式是组合使用内置函数:
// 第一步:剥离所有 HTML 标签,保留文本内容
$result = array_map('strip_tags', $arr);
// 第二步:去除首尾空白字符(可选但强烈推荐)
$result = array_map('trim', $result);
print_r($result);输出结果:
立即学习“PHP免费学习笔记(深入)”;
Array
(
[0] => Value1
[1] => Value2
[2] => Value3
)?
strip_tags()会安全地移除所有 HTML 和 PHP 标签,仅保留文本节点;它不会解析或执行 HTML,因此对 XSS 防护无直接作用,但在此场景下完全安全可靠。
⚠️ 注意事项
-
strip_tags()不验证 HTML 结构,也不处理嵌套标签或属性中的内容(如title="Value1"不会被提取); - 若原始字符串中存在其他标签(如
<strong></strong>、<span></span>)嵌套在<a></a>内,它们也会被一并清除; - 如需更精确控制(例如只提取
<a></a>的文本、同时保留某些内联标签),应改用 DOMDocument 或正则表达式(但正则解析 HTML 不推荐); -
array_map()是非破坏性操作,原数组$arr不会被修改。
✅ 进阶写法(一行完成)
可合并为单行链式调用(PHP 7.4+ 支持箭头函数,但此处仍推荐可读性优先):
$result = array_map(fn($s) => trim(strip_tags($s)), $arr);
该写法兼具简洁性与明确语义,适合现代 PHP 项目。
总之,面对结构简单、格式统一的 HTML 片段数组,array_map('strip_tags', $arr) 是提取 innerHTML 的首选方案——轻量、标准、无需依赖外部库,且性能优异。



















