正则表达式错误php错误


regular expression error php error

我制作了一个正则表达式来从导入的页面中删除脚本标记。(使用过的卷曲)<script['s'S]*?/script>这是我的快递

当我使用它与preg_replace一起删除标签时,它给了我这个错误

警告:preg_replace()[function.preg replace]:第21行c:''examplep''htdocs''get_page.php中的未知修饰符"c"

有人能帮我吗

感谢

您应该为正则表达式选择一个合适的分隔符(最好是不出现在模式中任何位置的分隔符,这样您就不需要转义)。例如:

"#<script['s'S]*?/script>#"

此外,如果您试图防止恶意人员将Javascript注入您的页面,请不要这样做。它可以很容易地绕过。使用已知安全构造的白名单,而不是试图删除危险的代码。

PHP需要RegExp模式上的分隔符。此外,你的表达也可以简化。

|<script.+/script>|

您是否用正斜杠包装regexp?

$str = preg_replace('/<script['s'S]*?'/script>/', ...);

是否用分隔符(如/)包围正则表达式?如果你没有,你需要。如果你使用了/(而不是其他选择),你需要在/script中逃离/,所以它看起来像'/script

使用以下代码:

$result = preg_replace('%<script['s'S]*?/script>%', $change_to, $subject);