跳到主要内容

写出PHP正则表达式,过虑网页上的所有JS/VBS脚本?

参考答案:

在PHP中,你可以使用preg_replace函数和正则表达式来过滤网页上的所有JavaScript和VBScript脚本。下面是一个示例正则表达式,它尝试匹配常见的JavaScript和VBScript标签和内容:

<?php

$content = '... 网页内容 ...'; // 这里是你的网页内容

// 正则表达式匹配JavaScript和VBScript脚本
$pattern = '/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script\b|vbscript:|javascript:|on\w+=/i';

// 使用preg_replace函数过滤脚本
$filteredContent = preg_replace($pattern, '', $content);

echo $filteredContent;

?>

这个正则表达式包括以下几个部分:

  1. <script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script\b>:匹配完整的<script>标签及其内容。
  2. vbscript::匹配包含vbscript:字符串的内容,这通常是VBScript脚本的引用。
  3. javascript::匹配包含javascript:字符串的内容,这通常是JavaScript事件的引用。
  4. on\w+=:匹配以on开头的事件属性(如onclickonload等),这些属性通常用于绑定JavaScript事件。

请注意,这个正则表达式可能无法完全匹配所有可能的JavaScript和VBScript脚本,因为脚本可以以各种方式嵌入到HTML中。此外,正则表达式也不是处理HTML的最佳工具,因为HTML是一种嵌套结构,而正则表达式更擅长处理线性文本。更可靠的方法是使用HTML解析库(如PHP的DOMDocument)来分析和过滤内容。

然而,如果你只是需要简单的过滤,并且知道网页内容相对规范,上面的正则表达式可能是一个可行的解决方案。但请务必在实际应用中进行充分的测试,以确保它符合你的需求。