function filter($string) {
$search = array ("'<script[?>]*?>.*?</script>'si", // Remove javascript.
"'<[\/\!]*?[^<?>]*?>'si", // Remove HTML tags.
"'<>'si", // Remove HTML tags.
"'([\r\n])[\s]+'", // Remove spaces.
"'&(quot|#34);'i", // Remove HTML entites.
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // Evaluate like PHP.
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
"?>",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
return mysql_real_escape_string(preg_replace ($search, $replace, $string));
}
我在互联网上买了一些脚本,开发人员没有回复,我修复了所有内容,因为很多东西都被弃用了,但我无法解决这个问题。 这是错误
PHP警告:mysql_real_escape_string()期望参数1为字符串,数组在第72行的/home/bioskop/public_html/gold-app/gold-includes/GOLD.php中给出
我尝试了php版本5.4,5.5,5.6和7.0。 没有成功。 请帮我升级这个我真的很新的PHP。 此代码已售出,并且必须在某些时候起作用。
答案 0 :(得分:1)
这是因为$ string参数是一个数组。如果您阅读preg_replace的手册页,您会遇到以下内容:
如果subject参数是一个数组,preg_replace()返回一个数组, 否则就是一个字符串。
问题是:为什么这个过滤器函数在需要字符串时会被赋予一个数组?