递归方式的对变量中的特殊字符进行转义/去除转义

方法一:(循环)

/********************************************************************工具类*******************************************
     * 描述 : 深度加/删反斜杠
     * 参数 :
     *     &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);
    }
}

时间: 2024-10-13 00:59:55

递归方式的对变量中的特殊字符进行转义/去除转义的相关文章

递归方式解析出字符串中的@某人

<?php $userList = []; /** * 用递归的方式来查找字符串中的 @用户名 * 用法:@用户名之后需要加空格隔断,才能检测到 * @param $content */ function fetchAt($content) { global $userList; $afterAt = strstr($content, '@'); //@符号之后 if ($afterAt) { $username = strstr($afterAt, ' ', true); //用户名 if (

c++格式化输出中包含特殊字符%,该怎么转义?

两个%%表示一个% 原文地址:https://www.cnblogs.com/somethingintheway/p/11751413.html

二叉树基本操作:前序、中序、后序遍历(递归方式)

二叉树是最常见最重要的数据结构之一,它的定义如下: 二叉树(binary tree)是有限多个节点的集合,这个结合或者是空集,或者由一个根节点和两颗互不相交的.分别称为左子树和右子树的二叉树组成. 二叉树最基本的操作是遍历:一般约定遍历时左节点优先于右节点,这样根据根节点的遍历顺序可分为三种遍历操作:前序-先遍历根节点,再处理左右节点:中序-先遍历左节点,然后处理根节点,最后处理右节点:后序-先遍历左右节点,然后处理根节点. 从上边二叉树定义可以看出:二叉树使用了递归的概念描述.所以,二叉树的很

数据结构 递归和非递归方式实现二叉树先序、中序和后序遍历

二叉树的先序遍历顺序是根.左.右:中序遍历顺序是左.根.右:后序遍历顺序是左.右.根. 递归方式实现如下: 1 public class TreeNode { 2 private int value; 3 private TreeNode left, right; 4 5 public TreeNode(int data) { 6 value = data; 7 } 8 9 // 递归方式实现先序遍历 10 public void preorder(TreeNode treeNode) { 11

二叉树问题:递归方式实现二叉树先序、中序、后序遍历

问题描述: 用递归方式实现二叉树的先序.中序.后序遍历. 算法实现: //二叉树节点private class Node { public int value; public Node left; public Node right; public Node(int value) { this.value = value; }} //前序遍历public void preOrderRecur(Node head) { if (head == null) { return; } System.ou

bash的变量中存放的字符串的处理方式

bash变量: 弱变量: 1.无需实现定义即可应用: 2.变量没有数据类型的硬性要求,默认是字符型: 1.字符串切片: ${#VAR}:返回字符型变量的变量值长度: ${VAR:offset}:返回字符型变量中第"offset"位置之后的内容,不包括第"offset"位置的字符: offset取值范围:0-$[${#VAR-1}] ${VAR:offset:number}:返回字符型变量中从第"offset"个字符后开始长度为"numb

正则表达式中的特殊字符 字符 含意

JS正则表达式大全(整理详细且实用) 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*". ^ 匹配一个输入或一行的开头,/^a/匹配&quo

Bash中的特殊字符

# 表示注释 #! 指定当前脚本的解析器 #!/bin/bash echo "Hello World" ; 命令分隔符 #!/bin/bash echo hello;echo there filename=ttt.sh if [ -r "$filename" ]; then echo "File $filename exists."; cp $filename $filename.bak else echo "File $filenam

Shell脚本递归打印指定文件夹中全部文件夹文件

#!/bin/bash #递归打印当前文件夹下的全部文件夹文件. PRINTF() { ls $1 | while read line #一次读取每一行放到line变量中 do [ -d $1/$line ] && { DIR="$1/$line" echo $DIR } DIR1=`dirname $DIR` #求路径. A=`ls -F $DIR1 | grep / | grep "\<$line\>"` #推断line是不是一个文件