Есть ли функция PHP для преобразования именованных объектов HTML в их соответствующие числовые объекты HTML?
Например:
$str = "Oggi è un bel giorno"; echo entities_to_unicode($str); // Oggi è un bel giorno
Заранее благодарим за хороший день!
echo preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").";"', html_entity_decode($str))
Это решение основано на коде с php.net :
function entities_to_unicode($str) { $str = html_entity_decode($str, ENT_QUOTES, 'UTF-8'); $str = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $str); return $str; } $str = 'Oggi è un bel giorno'; echo entities_to_unicode($str);
Сначала используйте html_entity_decode, чтобы получить незашифрованную версию исходного кода. Если необходимо, установите третий параметр (кодирование) в соответствующее значение.
Затем используйте utf8_encode в этом исходном коде.
$source_code_without_entities = html_entity_decode($source_code_with_entities); $utf8_source_code = utf8_encode($source_code_without_entities);
Вот этот
Вот
function htmlent2xml($s) { return preg_replace_callback("/(&[a-zA-Z][a-zA-Z0-9];)/",function($m){ $c = html_entity_decode($m[0],ENT_HTML5,"UTF-8"); return htmlentities($c,ENT_XML1,"UTF-8"); },$s); }