本文介绍在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等标记,该方法更为简洁。