PHP过滤HTML与脚本标签:处理转义字符的完整方案

作者:开源拾贝

时间:2026-10-23

浏览:431

本文介绍在PHP中完全过滤HTML、JavaScript及CSS标签的方法。针对标签被转义(如显示为实体编码)的情况,先使用htmlspecialchars_decode将源码还原为尖括号形式,再通过正则表达式移除script、iframe、style及所有HTML标签,确保内容安全。

文章目录

PHP过滤HTML与脚本标签:处理转义字符的完整方案

回顾过往的相关技术文章,


在PHP开发中,有效过滤HTML标签、JavaScript代码以及CSS样式标签是一项常见需求。


具体的实现逻辑如下:

<?php
$str = preg_replace( "@<script(.*?)</script>@is", "", $str );
$str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str );
$str = preg_replace( "@<style(.*?)</style>@is", "", $str );
$str = preg_replace( "@<(.*?)>@is", "", $str );
?> 

上述代码主要依赖正则表达式来清除HTML标签。然而,实际应用中可能会发现这些规则失效,原因在于输入内容经过了转义处理。例如,页面上正常显示的<br>标签,在源码中可能呈现为HTML实体编码形式(如&rdquo;&mdash;&mdash;等类似编码)。为解决此问题,需先将内容中的实体编码进行反编译(还原),然后再执行过滤操作。


处理转义内容的代码如下:

$str= htmlspecialchars_decode($str);

通过调用htmlspecialchars_decode函数,可以将源码中的实体编码转换回原始的尖括号形式(如<>),


随后再次执行过滤操作,具体代码如下:

$str= preg_replace("/<(.*?)>/","",$str);

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章