php中的脚本帮助字符串

时间:2013-01-25 19:59:42

标签: php

如何创建一个带有参数的php脚本,并在它找到的每个字符串中转义引号,无论嵌套数组有多少级别。

我试过这样的事情

$FileName = preg_replace("/'/", '', $UserInput); 

但我不想替换字符串

4 个答案:

答案 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;
       }
    }
 }