
使用 `strip_tags()` 移除 html 标签后常残留多余空格、换行和制表符,导致 textarea 显示松散。本文提供结合正则替换的标准化清理方案,确保输出紧凑、可读且符合表单输入规范。
在 PHP 中处理从富文本接口(如 WordPress REST API)获取的 HTML 内容时,strip_tags() 是移除标签的基础手段,但它不会清理标签移除后遗留的空白字符——例如连续空格、换行符(\n)、制表符(\t)或段落间空行,这些都会在
推荐采用两步清洗策略:
- 先用 strip_tags() 剥离所有 HTML 标签;
- 再用 preg_replace() 归一化空白字符,将多个空白符(含空格、换行、制表符)压缩为单个空格,并可选去除首尾空白。
以下是优化后的完整代码示例:
✅ 关键说明与最佳实践:
立即学习“PHP免费学习笔记(深入)”;
- 使用 preg_replace(['/[\s\t\n\r]+/', '/\s{2,}/'], ' ', $str) 可同时处理各类空白组合,比单一正则更鲁棒;
- 务必对输出到 HTML 的变量调用 htmlspecialchars(),防止 XSS 漏洞(尤其当原始内容可能含 等字符时);
- trim() 应置于正则替换之后,确保首尾无空格;
- 若需保留段落换行(如将
转为 \n),应改用 DOMDocument 解析 + 自定义逻辑,而非纯正则;
- 避免在 echo 前直接输出未过滤的 $text —— 即使已 strip_tags(),仍可能存在恶意 JS 实体或属性残留。
通过该方法,textarea 将呈现干净、紧凑、语义清晰的纯文本,兼顾安全性、可维护性与用户体验。











