我无法找到解决以下问题的方法:
当我通过htmlentities()运行它们时,网站上有很多特殊字符;
您将所有特殊字符转换为HTML实体:
£ => £
" => "
 => Â
....
但我真正需要的是该编码的十进制版本:
£ => £
" => "
 of(Â) => À
=>  
是否存在可以解决此问题的功能,而无需使用替换手动执行此操作?
答案 0 :(得分:2)
如下所示?
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 : & é $ à ç <")));
答案 1 :(得分:0)
在接受的答案示例以及有关“ e”标志的弃用警告的相关注释之后,这是一个更新的多字节兼容函数,以十进制表示法将字符串特殊字符编码为其HTML实体:
function htmlnumericentities($string) {
return mb_ereg_replace_callback('[^!-%\x27-;=?-~ ]', function($matches) {
return '&#'.mb_ord($matches[0]).';';
}, $string);
}
您当然需要MB String。
例如Dès 67,57 €
将转换为Dès 67,57 €
。