'ec"','two'=>5));function&"/> 'ec"','two'=>5));function&">
> 백엔드 개발 > PHP 튜토리얼 > 用递归addslashes函数转义数组解决方案

用递归addslashes函数转义数组解决方案

WBOY
풀어 주다: 2016-06-13 12:02:15
원래의
947명이 탐색했습니다.

用递归addslashes函数转义数组
有个一个数组,可能是多维的,里面有些值带有特殊符号 比如“  我用递归加addslashes()转义  

没有达到效果 帮忙看看哪错了
$arr=array('ii"',array('one'=>'ec"','two'=>5));
function t(&$arr){
foreach($arr as $v){
if(is_string($v)){
$arr[]=addslashes($v);
}else{
t($v);
}
}
}
t($arr);
echo "

";<br>print_r($arr);<br>echo '
로그인 후 복사
';



前台页面是这么输出的
________________________________________________________

Warning: Invalid argument supplied for foreach() in D:\AppServ\www\index.php on line 22
Array
(
    [0] => ii"
    [1] => Array
        (
            [one] => ec"
            [two] => 5
        )

    [2] => ii\"
    [3] => ii\\\"
)

------解决方案--------------------
你自己对比下
$arr=array('ii"',array('one'=>'ec"','two'=>5),'aa"a');<br />function t(& $arr){<br />    foreach($arr as $k => $v){<br />        if(is_string($v)){<br />            $arr[$k] = addslashes($v);<br />        }else{<br />            $arr[$k] = t($v);<br />        }<br />    }<br />    return $arr;<br />}<br />t($arr);<br />echo "<pre class="brush:php;toolbar:false">";<br />print_r($arr);<br />echo '
로그인 후 복사
';
------解决方案--------------------
$arr = array('ii"',array('one'=>"ec'",'two'=>5));<br />array_walk_recursive($arr, function(&$v) { $v = addslashes($v);} );<br />print_r($arr);<br />
로그인 후 복사
Array<br />(<br />    [0] => ii\"<br />    [1] => Array<br />        (<br />            [one] => ec\'<br />            [two] => 5<br />        )<br /><br />)<br /><br />
로그인 후 복사

------解决方案--------------------
改成這樣就可以了。
<br />function t(&$arr){<br />	foreach($arr as $key=>$v){<br />		if(is_string($v)){<br />			$arr[$key]=addslashes($v);<br />		}else{<br />			t($arr[$key]);<br />		}<br />	}<br />}<br />
로그인 후 복사

------解决方案--------------------
再改一下。

<br />function t(&$arr){<br />    foreach($arr as $key=>$v){<br />        if(is_array($v)){<br />            t($arr[$key]);<br />        }else{<br />            $arr[$key]=addslashes($v);<br />		}<br />    }<br />}<br /> <br />$arr=array('ii"',array('one'=>'ec"','two'=>'5'));<br />t($arr);<br /><br />print_r($arr);<br />
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿