0

我想检查 url 中的脚本标签

例如:如果 url 有 script 标签,则下面的 senario 工作正常..

<?php
 $url = 'admin/content/test/<script>';
 preg_match('<script>', $url, $match);
 if (count($match) >= 1) {
  print 'It executes';
 }
?>

输出: It executes

但在我的情况下,如果 url 有一个字符串“product_description”,那么上面的条件也匹配

<?php
  $url = 'admin/content/product_description/test';
  preg_match('<script>', $url, $match);
  if (count($match) >= 1) {
   print 'It executes';
  }
?>

输出:执行

请提出正确的方法来检查 url 中的脚本标签..

4

2 回答 2

1

尝试使用strpos 而不是preg_match

if (strpos($url,'<script>') !== false) {
   print 'It executes';
}

这里有这个功能的手册:documentation

于 2013-06-27T11:35:34.470 回答
0

您必须将正则表达式放在分隔符内:

preg_match('/<script>/', $url, $match);

您的版本有效,因为这对<>被视为分隔符,它与以下内容相同:

preg_match('/script/', $url, $match);

它匹配script并且也去script离子

于 2013-06-27T11:52:43.560 回答