0

我有一个数组,其中包含几个这样的字符串:

array(133) {
 [0]=>
  array(1) {
["row"]=>
array(5) {
  [0]=>
  string(10) "testd ' /% ata"
  [1]=>
  string(14) "testdata 111"
  [2]=>
  string(17) "testdata 123"
  [3]=>
  string(0) ""
  [4]=>
  string(0) ""
 }
}
[1]=>
 array(1) {
 ["row"]=>
 array(5) {
  [0]=>
  string(9) "198"
  [1]=>
  string(14) "testdata"
  [2]=>
  string(41) "testdat"
  [3]=>
  string(0) ""
  [4]=>
  string(0) ""
 }
}

我的问题是如何检查特殊字符数组中的字符串?这些特殊字符在导入我的数据库时会导致语法错误。

我想我需要使用这样的东西吗?

preg_replace('/[^a-zA-Z0-9_ -%][().][\/]/s', '', $String);

谁能帮我解决这个问题?

好吧,我已经创建了这段代码:

        // search for special chars in the import data and remove them 
        $illegal = "#$%^&*()+=-[]';,./{}|:<>?~";

        foreach ($data_set as $data) 
        foreach ($data_set['data'] as $row) {
           if(strpbrk($row, $illegal)) {
            echo($row);
            die();
           }                
            else {
                //not allowed ,escape or do what you want
                echo("no characters found");
                die();
            } 
            var_dump($row);
            die();
         }

但这仍然给出一个错误:

遇到 PHP 错误

严重性:警告

消息:strpbrk() 期望参数 1 是字符串,给定数组

文件名:控制器/import.php

行号:153

找不到字符

4

1 回答 1

0

你可以看看strpbrk。它应该可以解决您的问题。

例子:

$tests = "testd ' /% ata";
);
$illegal = "#$%^&*()+=-[]';,./{}|:<>?~";

echo (false === strpbrk($test, $illegal)) ? 'Allowed' : "Contains special chars";

但我建议在插入数据库之前转义你的字符串,这样更安全。

foreach ($yourArray as $array) 
foreach ($array['row'] as $row) {

    if(strpbrk($row, $illegal)) { 
         //allowed ,insert to db
    }
    else {
        //not allowed ,escape or do what you want
    }  

 }
于 2013-09-18T08:46:52.887 回答