
本文介绍如何在 php 中安全移除 html 标签,并进一步压缩多余空白(如换行、制表符、连续空格),避免 `strip_tags()` 后 textarea 中出现异常缩进或空行。
在使用 strip_tags() 处理从 WordPress REST API 或其他富文本源(如 content.rendered)获取的 HTML 内容时,虽然标签被成功清除,但原始 HTML 中的换行符(\n)、制表符(\t)及多空格仍会保留在纯文本中。这些不可见字符在
推荐采用两步清洗策略:
- 先用 strip_tags() 移除所有 HTML 标签;
- 再用 preg_replace() 统一规范化空白字符——将多个连续空白、换行、制表符替换为单个普通空格,并可选地 trim() 去除首尾空白。
以下是优化后的完整示例代码:
\s*/i', "\n\n", $text); // $text = strip_tags($text); ?>
⚠️ 重要注意事项:
立即学习“PHP免费学习笔记(深入)”;
- 永远对输出到 HTML 的变量使用 htmlspecialchars()(如上例所示),防止 XSS 漏洞——strip_tags() 不等于安全转义;
- preg_replace('/\s+/', ' ', $str) 比分别匹配 \t、\n 更健壮,能同时处理回车(\r)、全角空格等常见空白;
- 若原文本需保留逻辑段落结构(如
分隔),建议在 strip_tags() 前先将块级标签(如
、
)替换为换行符,再统一清理; - 避免在 echo 前直接拼接未过滤的 $text,尤其当内容来自外部 API 时。
通过以上处理,textarea 中显示的文本将紧凑、整洁、符合用户阅读预期,同时兼顾安全性与可维护性。











