你可以得到correspondances人物名单=>通过使用实体htmlentities ,与功能get_html_translation_table ; 考虑下面的代码:
$list = get_html_translation_table(HTML_ENTITIES);
var_dump($list);
(您可能要检查的第二个参数的手动在功能-也许你会需要将其设置为默认的一个不同的值)
它可以把你的东西是这样的:
array
' ' => string ' ' (length=6)
'¡' => string '¡' (length=7)
'¢' => string '¢' (length=6)
'£' => string '£' (length=7)
'¤' => string '¤' (length=8)
....
....
....
'ÿ' => string 'ÿ' (length=6)
'"' => string '"' (length=6)
' string '<' (length=4)
'>' => string '>' (length=4)
'&' => string '&' (length=5)
现在,删除不想要的correspondances:
unset($list['"']);
unset($list['
unset($list['>']);
unset($list['&']);
您的清单,目前,已通过htmlentites使用,除非你不想编码几个字符的所有字符correspondances =>实体。
而现在,你只需要提取键和值的列表:
$search = array_keys($list);
$values = array_values($list);
最后,你可以使用str_replace函数来做更换:
$str_in = '
Camión español
';$str_out = str_replace($search, $values, $str_in);
var_dump($str_out);
你会得到:
string '
Camión español
' (length=84)它看起来像你想要的东西;-)
编辑:好了,除了编码的问题(该死的UTF-8,我想-我试图找到一个解决方案,并会再次编辑)
第二个编辑几分钟后:似乎你必须使用utf8_encode上$search列表,调用之前str_replace :-(
这意味着使用这样的事情:
$search = array_map('utf8_encode', $search);
调用之间array_keys和呼叫str_replace 。
而且,这个时候,你应该得到你想要的东西:
string '
Camión español
' (length=70)这里是代码的完整部分:
$list = get_html_translation_table(HTML_ENTITIES);
unset($list['"']);
unset($list['
unset($list['>']);
unset($list['&']);
$search = array_keys($list);
$values = array_values($list);
$search = array_map('utf8_encode', $search);
$str_in = '
Camión español
';$str_out = str_replace($search, $values, $str_in);
var_dump($str_in, $str_out);
而完整的输出:
string '
Camión español
' (length=58)string '
Camión español
' (length=70)这一次,它应该确定^^
它并不真正适合在一条线,就是可能不是最优化的解决方案; 但它应该做工精细,并具有允许您添加/删除任何对应关系性格的优势=>实体,你需要与否。
玩得开心 !