【问题标题】:Why do I get an error code shows (PHP Warning)为什么我得到一个错误代码显示(PHP 警告)
【发布时间】:2016-01-19 03:45:58
【问题描述】:

我的问题:

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);
  }
 }
}

什么问题?什么是正确的代码? 坦克

【问题讨论】:

  • 显示你在$_POST得到了什么

标签: php preg-match warnings


【解决方案1】:

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

检查下面将从发布请求中获取所有键值的代码。

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);
  }
 }

【讨论】:

  • 我试了一下,但我再次警告:“PHP 警告:preg_match() 期望参数 2 为字符串,数组在...中给出”
猜你喜欢
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2019-01-08
  • 1970-01-01
  • 2018-05-09
  • 2011-11-10
相关资源
最近更新 更多