网络语言系列&php系列【仅供参考】:PHP用正则把HTML中的js脚本过滤掉

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




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

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

<?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. 正则表达式模式

    1. /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/is

    2. /<script\b[^<]*/:匹配以<script开头的标签,并允许标签内有属性(例如type="text/javascript")。

    3. (?:(?!<\/script>)<[^<]*)*:这是一个非贪婪匹配,用于匹配<script>标签和</script>之间的任何内容,但不包括</script>

    4. <\/script>/:匹配结束标签</script>

    5. i:不区分大小写的匹配。

    6. s:让.匹配包括换行符在内的所有字符。

  2. preg_replace函数

    1. 使用上面定义的正则表达式模式,将匹配到的JavaScript脚本替换为空字符串。
  3. 示例HTML字符串

    1. 包含一些示例HTML和一个<script>标签
  4. 输出清理后的HTML

    1. 调用removeJavaScript函数后,输出不包含JavaScript脚本的HTML。

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







ac-er8888

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值