2015-10-20 74 views
-3

我的问题:为什么我得到一个错误代码显示(PHP警告)

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

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

+0

显示你在得到'$ _POST' – urfusion

回答

0

问题是您传递一个数组作为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); 
    } 
} 
+0

我尝试,但我又warrning:“PHP的警告:的preg_match()预计参数2为字符串数组中给定的......” –