多维数组中的strip_tags

时间:2013-04-04 14:02:12

标签: php

我找到了如何用动态多维数组删除html标签:

function strip_tags_deep($value){
  return is_array($value) ? array_map('strip_tags_deep', $value) : strip_tags($value);
}

现在,我想将strip_tags仅应用于键值...

function strip_tags_deep($value){
  return is_array($value) ? array_map('strip_tags_deep', $value) : /* IF $KEY == "valuetest" THEN */ strip_tags($value);
}

我该怎么做?

编辑:Thx to Prisoner =)

我的新功能是:

function strip_tags_deep($value, $key = null){
  if(is_array($value)){
    return array_map('strip_tags_deep', $value, array_keys($value));
  }else{
    if($key === '#title'){
      return strip_tags($value));
    }
    return $value;
  }
}

但她会返回一个数组但是......(< - 见edit2 bellow) 但是,如果我这样做..

function strip_tags_deep($value, $key = null){
  if(is_array($value)){
    return array_map('strip_tags_deep', $value);
  }else{
    //if($key === '#title'){
      return strip_tags(html_entity_decode($value));
    //}
    return $value;
  }
}

我的结果与第一次尝试相同。嗯,为什么第三个参数的array_map有问题?

edit2:示例数组

"arrayvalue1"
 "arrayvalue11"
  "a" => "avalue"
  "b" => "bvalue"
  "arrayvalue111"
    "c" => "cvalue" 

成为“'strip_tags_deep',$ value,array_keys($ value)”:

0
 0
  0 => "avalue"
  1 => "bvalue"
 1
  0 => "cvalue"

我丢失了“数组名称”:/(原谅我可怜的英语)

1 个答案:

答案 0 :(得分:1)

function strip_tags_deep($value, $key = null){
  if(is_array($value)){
    return array_map('strip_tags_deep', $value, array_keys($value));
  }else{
    if($key === 'valuetest'){
      return strip_tags($value);
    }
    return $value;
  }
}

这将输出:

var_dump(strip_tags_deep(array('valuetest'=>'test<>'))); // array(1) { [0]=> string(4) "test" }
var_dump(strip_tags_deep(array('tests'=>'test<>'))); // array(1) { [0]=> string(6) "test<>" }