我已经制作了一个正则表达式来从导入的页面中删除脚本标记。(使用curl)
<script[\s\S]*?/script>
这是我的表达
当我使用它与preg_replace删除标签时,它给了我这个错误
警告:preg_replace()[function.preg-replace]:第21行的C:\ xampp \ htdocs \ get_page.php中的未知修饰符'c'
任何人都可以帮助我
感谢
答案 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
而不是。