日期:2014-05-17  浏览次数:20461 次

多维数组递归问题
PHP code

//为了实现内容中去除HTML A标签
function htmla(&$string)
    {
        if(is_array($string))
        {
            foreach($string as $k=>$v)
            {
                $string[$k]=preg_replace("/<\/?a.*?>/","",$v);
                if(is_array($v))
                {
                    htmla($string[$k]);
                }
            }
        }else{
            $string=preg_replace("/<\/?a.*?>/","",$string);
        }
    }

    $test=array(1,2,34,5,array("a"=>"<a href=''>而</a>",1,23,array("df"=>"<a href=''>测试下</a>"),array(23,32)),"b"=>"<a href=''>三</a>");
        htmla($test);
        var_dump($test);
//结果
array(6) {
  [0] => string(1) "1"
  [1] => string(1) "2"
  [2] => string(2) "34"
  [3] => string(1) "5"
  [4] => array(5) {
    ["a"] => string(3) "而"
    [0] => string(1) "1"
    [1] => string(2) "23"
    [2] => string(5) "Array" //超过2维就没法转换了。。
    [3] => string(5) "Array"
  }
  ["b"] => string(3) "三"
}



------解决方案--------------------
foreach($string as $k=>$v)
{
//$string[$k]=preg_replace("/<\/?a.*?>/","",$v);
if(is_array($v))
{
htmla($string[$k]);
}
else
{
$string[$k]=preg_replace("/<\/?a.*?>/","",$v);
}
}