正则表达式错误php错误

时间:2012-03-16 20:06:43

标签: php regex preg-replace

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

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

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

任何人都可以帮助我

感谢

5 个答案:

答案 0 :(得分:1)

你应该为你的正则表达式选择一个合适的delimiter(最好是你的模式中没有出现的那个,这样你就不需要逃避)。例如:

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

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

答案 1 :(得分:0)

使用以下代码:

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

答案 2 :(得分:0)

你用正斜杠包裹你的正则表达式吗?

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

答案 3 :(得分:0)

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

|<script.+/script>|

答案 4 :(得分:0)

您是否使用分隔符(例如/)包围正则表达式?如果你没有,你需要。如果您这样做了,并且使用了/(而不是其他选择),则需要转义/中的/script,因此它看起来像\/script而不是。