zoukankan      html  css  js  c++  java
  • 递归方式的对变量中的特殊字符进行转义/去除转义

    方法一:(循环)

    /********************************************************************工具类*******************************************
         * 描述 : 深度加/删反斜杠
         * 参数 :
         *     &data : 指定替换的数组
         *      func : addslashes(默认)=添加反斜杠, stripslashes=删除反斜杠
         */
        public static function &slashesDeep(&$data, $func = 'addslashes') {
            $waitList = array(&$data);                                                                                      //待处理列表

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

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

            return $data;
        }

    方法二:(递归)

    /**
     * 递归方式的对变量中的特殊字符进行转义
     *
     * @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);
        }
    }

  • 相关阅读:
    Makefile的常用技术总结
    NPOI 插入行[转]
    LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别 [转]
    Using Google Public DNS[Google公共DNS服务器]
    软件开发知识[TDD]
    MySQL函数之STRCMP()
    MySQL知识[INSERT语法]
    软件开发知识[ORM]
    软件开发知识[ADO.NET Entity Framework]
    mysql workbench 在模板与数据库间同步
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/4447950.html
Copyright © 2011-2022 走看看