我的正则表达式功能似乎是正确的,但它不起作用

时间:2020-03-13 13:41:51

标签: php regex

我正在尝试从数据库中删除包含恶意软件的脚本。
它被注入到我表的许多寄存器中。

该脚本以<script>标签开始,以</script>标签结束。

我正在使用以下代码来查找和替换它:

$content = $post->post_content;
$new_content = preg_replace('/(<script>.+?)+(<\/script>)/i', '', $content);

我已经在regx101.com上对其进行了测试,并且可以正常工作,但是在我的代码中却无法正常工作。

有人知道出什么问题了吗?

1 个答案:

答案 0 :(得分:0)

这是我<script>...</script>标签的goto正则表达式及其内容:

(\<script\>)([\s\S]*?)(<\/script>)

您没有转义某些关键字符,也没有捕获到标记内容中的所有内容。

以下是内容捕获组的说明:

\s匹配任何空白字符
\S与任何非空白字符匹配
*?可以在零次到无限次之间进行匹配,并尽可能少地匹配,并根据需要进行扩展

正如我之前所说,您实际上不应该这样做。您应该改用a PHP DOM parser

相关问题