此代码改编自html_entity_decode()
上的PHP手册条目protected function decode($data)
{
$data = html_entity_decode($data, ENT_QUOTES,'UTF-8');
//echo $data;
return $data;
}
protected function decode_data($data)
{
if(is_object($data) || is_array($data)){
array_walk_recursive($data,array($this,'decode'));
}else{
$data = html_entity_decode($data, ENT_QUOTES,'UTF-8');
}
return $data;
}
如果数据包含类似Children's
的值,则不会将其解码为Children's
答案 0 :(得分:1)
问题与html_entity_decode
无关,如果你想解码引号实体,即使是像'
这样的实体,你就是这么做的。
相反,您的问题是您没有正确使用array_walk_recursive
。在下面我使用了一个匿名函数并将值作为参考传递:
function decode_data($data)
{
if(is_object($data) || is_array($data)){
// &$val, not $val, otherwise the array value wouldn't update.
array_walk_recursive($data, function(&$val, $index) {
$val = html_entity_decode($val, ENT_QUOTES,'UTF-8');
});
}else{
$data = html_entity_decode($data, ENT_QUOTES,'UTF-8');
}
return $data;
}
$array = [
"Children's",
"Children's",
];
print_r( decode_data($array) );
将两个孩子的输出作为单引号字符而不是实体。