Caracteres especiais em html do PHP codificam não às entidades mas às casas decimais
Tenho dificuldade em encontrar uma solução para o seguinte problema:
eu tenho um monte de personagens especiais no site que quando eu executá-los através de htmlentities ();
todos os caracteres especiais são convertidos para entidades HTML:
£ => £
" => "
 => Â
....
mas o que realmente preciso é da versão Decimal dessa codificação:
£ => £
" => "
 of(Â) => À
=>  
Existe alguma função que já exista que resolva este problema sem fazer isto manualmente com um substituto?
2
1 answers
Algo como o seguinte?
function htmlnumericentities($str){
return preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str);
}
function numericentitieshtml($str){
return utf8_encode(preg_replace('/&#(\d+);/e', 'chr(str_replace(";","",str_replace("&#","","$0")))', $str));
}
echo (htmlnumericentities ("Ceci est un test : & é $ à ç <"));
echo ("<br/>\n");
echo (numericentitieshtml (htmlnumericentities ("Ceci est un test : & é $ à ç <")));
3
Author: Andreas Wong, 2012-03-15 09:48:07