'ec"','two'=>5));function&"/> 'ec"','two'=>5));function&">
ホームページ >バックエンド開発 >PHPチュートリアル >再帰的addlashes関数を使用したエスケープ配列ソリューション
再帰的 addslashes 関数を使用して配列をエスケープします
配列があり、これは多次元である可能性があります。たとえば、「再帰的 addlashes() を使用してエスケープしました。
」
では効果が得られませんでした。助けてください。
$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 "75172f27d2dda315743f0121a5a76ea3';
フロントページは次のように出力されます
____________________________________________________________
警告: 無効ですD:AppServwwwindex.php の 22 行目で foreach() に指定された引数
Array
(
[0] => ii"
[1] => Array
( [1] => ec"
[2] => 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 />