php中addslashes数组递归转义例子,递归方式的对变

作者: 关于计算机  发布:2019-09-26

一、函数首要了addslashes 方法

方法一:(循环)

addslashes() 函数在钦赐的预约义字符前增多反斜杠。

/********************************************************************工具类*******************************************
     * 描述 : 深度加/删反斜杠
     * 参数 :
     *     &data : 钦点替换的数组
     *      func : addslashes(暗许)=增多反斜杠, stripslashes=删除反斜杠
     */
    public static function &slashesDeep(&$data, $func = 'addslashes') {
        $waitList = array(&$data);                                                                                      //待管理列表

这一个预订义字符是:

        do {
            $wk = key($waitList);
            $wv = &$waitList[$wk];
            unset($waitList[$wk]);

•单引号 (')
•双引号 (")
•反斜杠 (\)
•NULL

            if( is_array($wv) ) {
                $result = array();                                                                                      //结果列表
                foreach($wv as $k => &$v) {
                    $result[$func($k)] = &$v;
                    $waitList[] = &$v;
                }
                $wv = $result;
            } else if( is_string($wv) ) {
                $wv = $func($wv);
            }
        } while( !empty($waitList) );

二、array_map 说明

        return $data;
    }

     array_map() 函数重返客商自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    如果传递步入的参数 是数组方式则采纳array_map方法开展参数的转义。

 

咱俩在开采对于$_GET,$_POST等变量

方法二:(递归)

 代码如下

/**
 * 递归情势的对变量中的特殊字符举行转义
 *
 * @access  public
 * @param   mix     $value
 *
 * @return  mix
 */
function addslashes_deep($value)
{
    if (empty($value))
    {
        return $value;
    }
    else
    {
        return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
    }
}

/**
 * 递归方式的对变量中的特殊字符进行转义
 *
 * @access  public
 * @param   mix     $value
 *
 * @return  mix
 */
function addslashes_deep($value)
{
 if (empty($value))
 {
  return $value;
 }
 else
 {
  return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
 }
}

 

假若是数组将不能够到位平安转义了,上面整理了三个例子,我们来拜见

/**
 * 递归格局的对变量中的特殊字符去除转义
 *
 * @access  public
 * @param   mix     $value
 *
 * @return  mix
 */
function stripslashes_deep($value)
{
    if (empty($value))
    {
        return $value;
    }
    else
    {
        return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
    }
}

方法三,能够参照他事他说加以考察该递归方法达成别的功效,代码如下:

 代码如下

<?php
$arr = array('a"aa',array("c'd",array('e"f')));
function changes($arr){
 foreach($arr as $k=>$v){
  if (is_string($v)){
   $arr[$k] = addslashes($v);
  }else if (is_array($v)) { //若为数组,则再转义.
   $arr[$k] = changes($v);
  }
 }
  return $arr;
}
print_r(changes($arr));
?>
输入结果如下:

Array
(
    [0] => a\"aa
    [1] => Array
        (
            [0] => c\'d
            [1] => Array
                (
                    [0] => e\"f
                )

        )

)

规律是老大的回顾,正是把数据应用foreach遍历三个个数组值实行操作了。

 

本文由金沙澳门官网送注册58发布于关于计算机,转载请注明出处:php中addslashes数组递归转义例子,递归方式的对变

关键词: