PHP正则表达式清除HTML、JS、CSS及注释的完整方案

作者:像素漫游时间:2026-10-30 16:04:11浏览:312

本文介绍在PHP中利用正则表达式批量移除网页中HTML标签、JavaScript代码、CSS样式及注释的方法。通过定义匹配规则数组并结合preg_replace函数,可高效清洗字符串。此外,文章还提及了使用内置函数strip_tags作为替代方案,帮助开发者快速清理前端代码残留。

PHP正则清除HTML/JS/CSS注释的实现代码

具体实现代码如下所示:


$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript
 "'<style[^>]*?>.*?</style>'si",  // 去掉 css
 "'<[/!]*?[^<>]*?>'si",      // 去掉 HTML 标记
 "'<!--[/!]*?[^<>]*?>'si",      // 去掉 注释 标记
 "'([rn])[s]+'",  // 去掉空白字符
 "'&(quot|#34);'i",  // 替换 HTML 实体

 "'&(amp|#38);'i",
 "'&(lt|#60);'i",
 "'&(gt|#62);'i",
 "'&(nbsp|#160);'i",
 "'&(iexcl|#161);'i",
 "'&(cent|#162);'i",
 "'&(pound|#163);'i",
 "'&(copy|#169);'i",
 "'&#(d+);'e");   // 作为 PHP 代码运行
 
$replace = array ("",
 "",
 "",
 "",
 "\1",
 "\"",
 "&",
 "<", 
 ">",
 " ",
 chr(161),
 chr(162),
 chr(163),
 chr(169),
 "chr(\1)");
//$document为需要处理字符串,如果来源为文件可以$document = file_get_contents($filename);
$out = preg_replace($search, $replace, $document);

使用strip_tags函数的替代方案

代码中定义了$search数组,依次匹配并移除JavaScript脚本(<script>标签及其内容)、CSS样式(<style>标签及其内容)、所有HTML标记、HTML注释(<!-- -->)、多余空白字符以及常见的HTML实体(如quot, amp, lt, gt等)。替换数组$replace中保留了部分特殊字符的chr编码。最终通过preg_replace函数将处理结果赋值给$out,若数据来源为文件,可先使用file_get_contents读取。

总结

除了正则替换方案,开发者也可以直接使用PHP内置函数strip_tags()来清除HTML、JavaScript及CSS等标记,该方法更为简洁。

作者最新文章