如何创建一个带有参数的php脚本,并在它找到的每个字符串中转义引号,无论嵌套数组有多少级别。
我试过这样的事情
$FileName = preg_replace("/'/", '', $UserInput);
但我不想替换字符串
答案 0 :(得分:1)
function recAddslashes($var){
return is_array($var) ? array_map(__FUNCTION__, $var) : addcslashes($var, "'");
}
(见addcslashes
)
答案 1 :(得分:0)
未经测试,但应该做到这一点:
function escape_single_quotes( $arg ){
if( is_array( $arg ) ){
foreach( $arg as &$k ){
$k = escape_single_quotes( $k );
}
}else{
$arg = str_replace("'","\'", $arg);
}
return $arg;
}
答案 2 :(得分:0)
如果您想使文件名安全,可以使用白名单方法,只有允许某些字符:
$Filename = preg_replace('/[^A-Za-z0-9_\-]/', '_', $userInput);
上述正则表达式将替换任何不是字母,数字,短划线或下划线的字符。任何不允许的字符都将被下划线替换。白名单(允许一小部分“安全”字符)比黑名单更安全(不允许列出一长串“不安全”字符)。我的第一个假设是您允许用户指定服务器上文件的名称。但是,如果您使用这种方法来防止SQL注入,那么您肯定会走错路。准备好的语句是保护数据库免受SQL注入的唯一推荐方法。
答案 3 :(得分:0)
你需要创建一个循环遍历每个数组的递归函数,它不是一个数组,它将替换'
然后回显它然后再循环到下一个数组
function traverseArray($array)
{
// Loops through each element. If element again is array, function is recalled. If not, result is echoed.
foreach($array as $key=>$value)
{
if(is_array($value))
{
traverseArray($value);
}else{
$FileName = preg_replace("/'/", '', $value);
echo $FileName;
}
}
}