如何使用 PHP 清理 HTML 标签并优化文本格式以适配 textarea

本文介绍如何在 php 中安全移除 html 标签,并进一步压缩多余空白(如换行、制表符、连续空格),避免 `strip_tags()` 后 textarea 中出现异常缩进或空行。

在使用 strip_tags() 处理从 WordPress REST API 或其他富文本源(如 content.rendered)获取的 HTML 内容时,虽然标签被成功清除,但原始 HTML 中的换行符(\n)、制表符(\t)及多空格仍会保留在纯文本中。这些不可见字符在

推荐采用两步清洗策略:

  1. 先用 strip_tags() 移除所有 HTML 标签
  2. 再用 preg_replace() 统一规范化空白字符——将多个连续空白、换行、制表符替换为单个普通空格,并可选地 trim() 去除首尾空白。

以下是优化后的完整示例代码:

\s*

/i', "\n\n", $text); // $text = strip_tags($text); ?>

  

⚠️ 重要注意事项

  • 永远对输出到 HTML 的变量使用 htmlspecialchars()(如上例所示),防止 XSS 漏洞——strip_tags() 不等于安全转义;
  • preg_replace('/\s+/', ' ', $str) 比分别匹配 \t、\n 更健壮,能同时处理回车(\r)、全角空格等常见空白;
  • 若原文本需保留逻辑段落结构(如

    分隔),建议在 strip_tags() 前先将块级标签(如


    )替换为换行符,再统一清理;

  • 避免在 echo 前直接拼接未过滤的 $text,尤其当内容来自外部 API 时。

通过以上处理,textarea 中显示的文本将紧凑、整洁、符合用户阅读预期,同时兼顾安全性与可维护性。