检查数组中的字符串是否有特殊字符

时间:2013-09-18 07:51:54

标签: php arrays special-characters

我有一个包含几个字符串的数组:

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

任何人都可以帮我这个吗?

Allright nog我创建了这段代码:

        // 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为字符串,给定数组

文件名:controllers / import.php

行号:153

找不到任何字符

1 个答案:

答案 0 :(得分: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
    }  

 }