我有一个包含几个字符串的数组:
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
找不到任何字符
答案 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
}
}