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