PHP用正则把HTML中的js脚本过滤掉

要在PHP中使用正则表达式从HTML中过滤掉JavaScript脚本标签,你可以使用preg_replace函数。以下是一个示例代码,展示了如何使用正则表达式来移除HTML中的<script>标签及其内容:

php 复制代码
<?php
function removeJavaScript($html) {
    // 正则表达式模式,匹配 <script> 标签及其内容,包括 <script> 和 </script> 之间的任何内容
    $pattern = '/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/is';
    
    // 使用 preg_replace 替换匹配的内容为空字符串
    $cleanedHtml = preg_replace($pattern, '', $html);
    
    return $cleanedHtml;
}

// 示例HTML字符串
$html = '
<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
    <script type="text/javascript">
        alert("Hello, World!");
    </script>
</head>
<body>
    <h1>This is a heading</h1>
    <p>This is a paragraph.</p>
    <script>
        console.log("Another script");
    </script>
</body>
</html>
';

// 调用函数移除JavaScript
$cleanedHtml = removeJavaScript($html);

// 输出清理后的HTML
echo $cleanedHtml;
?>

解释

  1. 正则表达式模式
    • /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/is
    • /<script\b[^<]*/:匹配以<script开头的标签,并允许标签内有属性(例如type="text/javascript")。
    • (?:(?!<\/script>)<[^<]*)*:这是一个非贪婪匹配,用于匹配<script>标签和</script>之间的任何内容,但不包括</script>
    • <\/script>/:匹配结束标签</script>
    • i:不区分大小写的匹配。
    • s:让.匹配包括换行符在内的所有字符。
  2. preg_replace函数
    • 使用上面定义的正则表达式模式,将匹配到的JavaScript脚本替换为空字符串。
  3. 示例HTML字符串
    • 包含一些示例HTML和一个<script>标签。
  4. 输出清理后的HTML
    • 调用removeJavaScript函数后,输出不包含JavaScript脚本的HTML。

这个示例代码会移除HTML中的所有JavaScript脚本标签及其内容,只留下纯HTML。如果你需要处理更复杂的HTML结构,可能需要使用更强大的HTML解析器,比如PHP的DOMDocument类,但这通常超出了正则表达式的范围。

相关推荐
BUG收容所所长7 分钟前
HoverMask与SelectedMask——如何让低代码平台的交互体验更加直观?
前端·javascript·设计
Q_Q51100828517 分钟前
python的驾校培训预约管理系统
开发语言·python·django·flask·node.js·php
Mintopia23 分钟前
🌐AIGC:从硅芯片中孕育的缪斯女神
前端·javascript·aigc
掘金安东尼28 分钟前
⏰前端周刊第425期(2025年7月28日–8月3日)
前端·javascript·面试
namehu29 分钟前
为什么我的margin-top被转换为vw而不是vh?
javascript·css·postcss
雪中何以赠君别30 分钟前
Vite + Axios + Nginx 环境变量与代理配置笔记
前端·javascript·vue.js
icebreaker32 分钟前
weapp-tailwindcss 已支持 uni-app x 多端构建
前端·javascript·uni-app
超龄超能程序猿33 分钟前
玩转 Playwright 有头与无头模式:消除差异,提升爬虫稳定性
前端·javascript·爬虫
Dxy123931021639 分钟前
Python正则表达式使用指南:从基础到实战
开发语言·python·正则表达式
PineappleCoder1 小时前
用 “私房钱” 类比闭包:为啥它能访问外部变量?
前端·javascript·面试