mysql真正的转义字符串和preg替换为数组

时间:2017-01-23 15:57:49

标签: php mysql

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。 此代码已售出,并且必须在某些时候起作用。

1 个答案:

答案 0 :(得分:1)

这是因为$ string参数是一个数组。如果您阅读preg_replace的手册页,您会遇到以下内容:

  如果subject参数是一个数组,

preg_replace()返回一个数组,   否则就是一个字符串。

问题是:为什么这个过滤器函数在需要字符串时会被赋予一个数组?