为什么我会收到错误代码显示(PHP警告)

时间:2015-10-20 13:02:40

标签: php preg-match warnings

我的问题:

PHP Warning:  preg_match() expects parameter 2 to be string, array given in *****

我的代码:

foreach ($_POST as $secvalue) {
  if ((preg_match("/<[^>]*iframe*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*object*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*applet*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*meta*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*onmouseover*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]script*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*body*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]style*\"?[^>]*/", $secvalue))) {
   die ($htmltags);
  }
 }
}

什么问题?什么是正确的代码? 罐

1 个答案:

答案 0 :(得分:0)

问题是您将数组作为第二个参数传递给preg_match(),但preg_match()将第二个参数作为String值传递。

检查将从后请求中获取所有键值的波纹管代码。

foreach ($_POST as $key => $secvalue){
 if ((preg_match("/<[^>]*iframe*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*object*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*applet*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*meta*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*onmouseover*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]script*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]*body*\"?[^>]*/", $secvalue)) ||
  (preg_match("/<[^>]style*\"?[^>]*/", $secvalue))) {
   die ($htmltags);
  }
 }