PHP 字符串处理实用类封装:过滤、替换与清理
在处理用户输入或后台数据时,经常需要对字符串进行清洗、格式化和安全过滤。本文整理并重构了一套 PHP 字符串处理工具类,重点解决了换行符与 HTML 标签的互转、多余空白字符的合并以及危险脚本标签的移除等常见需求,提供可直接复用的静态方法。
基础格式转换
在将文本内容展示到 Web 页面时,保持格式的统一性至关重要。以下方法用于在纯文本换行与 HTML 显示换行之间进行转换。
第1步:文本换行转为 HTML 标签
目的是将普通文本中的换行符 \n 转换为浏览器可视化的 <br /> 标签。
- 入口/方法:
nl2br() - 动作:直接调用 PHP 原生函数。
- 示例代码
static public function nl2br($string) {
return nl2br($string);
}
第2步:HTML 标签转为文本换行
目的是反向操作,将页面上的 <br> 或 <br/> 还原为换行符,便于回显至纯文本输入框。
- 入口/方法:
br2nl() - 参数:接收待处理的字符串。
- 动作:使用
str_replace同时替换两种常见的 br 标签格式。
static public function br2nl($string) {
$array = array('<br>', '<br/>');
return str_replace($array, "\n", $string);
}
空白字符清理
用户输入中常包含连续的空格或空行,通过正则表达式可有效压缩这些冗余字符。
第3步:多个空格合并为一个
目的是消除重复的空格,使字符串更紧凑。利用正则lookahead(前瞻断言)匹配连续相同的空白字符。
static public function merge_spaces($string) {
// (?=\s) 匹配后跟空格的字符,仅保留第一个
return preg_replace("/\s(?=\s)/", "\\1", $string);
}
第4步:多个换行标签合并为一个
目的同样是清理因多次粘贴导致的重复 <br>。
static public function merge_brs($string) {
// 匹配连续出现的 br 标签(忽略大小写)
return preg_replace("/((<br\/ ?>)+)/i", "<br>", $string);
}
HTML 与安全过滤
为了防止 XSS 攻击或保持输出纯净,需要剔除特定的 HTML 结构和脚本标签。
第5步:过滤所有 HTML 标签
简单粗暴地移除所有 HTML 标记,仅保留纯文本。
static public function strip_tags_filter($string) {
return strip_tags($string);
}
第6步:过滤 <style> 区块
目的是去除内联样式定义,防止 CSS 注入。使用正则匹配从 <style> 到 </style> 的全部内容。
static public function strip_style($string) {
$reg = "/<style[^>]*?>.*?<\/style>/is";
return preg_replace($reg, '', $string);
}
第7步:过滤危险脚本标签
针对 script、iframe、html、body 等可能承载恶意代码的标签进行深度过滤。
static public function strip_dangerous_tags($string) {
// 匹配危险标签及其属性内容
$reg = "/(\/ ?)(script|iframe|style|html|body|title|meta|\?|%)([^>]*?)>/is";
return preg_replace($reg, '', $string);
}
其他常用辅助功能
- 大小写转换:使用内置的
strtolower()和strtoupper()进行统一。 - Trim 增强版:自定义的 trim 方法允许指定要剔除的首尾字符列表,适用于复杂边界清理场景,但需注意正则表达式的正确构造以避免误伤正常字符。
以上就是PHP字符串过滤与替换详细方法的整理内容,更多关于PHP开发技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













