html-кодом, в конце я делаю html_entity_decode потому что ранее делал mb_convert_encoding, чтобы не иметь проблем с кодировкой в DOMDocument... И попался мне один документ, где в аттрибутах тегов html-код:
<span data-price="89 <span class="ruble">₽</span>"></span>
Вот думаю, как бы сделать html_entity_decode но чтобы содержимое аттрибутов не трогалось?
а можешь показать как ты делаешь mb_convert_encoding() и потом html_entity_decode(). Из какой кодировки в какую.
пока вижу только путь в написании своей function html_entity_decode_safe($string,$safe=['<','>','"'])
Сделал такую функцию: function html_entity_decode_safe($string,$safe=['lt','gt','quot']){ foreach ($safe as &$item){ $item=[ 'reg1' => '/&('.preg_quote($item).');/i', 'safe1' => '{html_entity_decode_safe_${1}}', 'reg2' => '/{html_entity_decode_safe_(.*?)}/i', 'safe2' => '&${1};', ]; } $string=preg_replace(array_column($safe,'reg1'),array_column($safe,'safe1'),$string); $string=html_entity_decode($string); $string=preg_replace(array_column($safe,'reg2'),array_column($safe,'safe2'),$string); return $string; }
Обсуждают сегодня