@Shimpanze

Как запретить PHP DOMDocument уродовать содержимое тега script?

Здравствуйте!

Имеется вот такой код (вы удивитесь, но это стандартный код админки WordPress (да да, внутри тега script тег div)):

609204698e34f642357359.png

Обрабатываем:

$html = mb_convert_encoding( $html, 'HTML-ENTITIES', 'UTF-8' );
$dom = new \DOMDocument;
libxml_use_internal_errors( true );
$dom->loadHTML( $html, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED );
libxml_clear_errors();

$output = $dom->saveHTML();

var_dump( $output );


На выходе:

609205fdbc8c3997045522.png

Помогите, пожалуйста, так как сил воевать с ним уже нет никаких.

Песочница: 3v4l.org/k8TSZ
  • Вопрос задан
  • 240 просмотров
Решения вопроса 2
DevMan
@DevMan
$dom = new \DOMDocument;
$dom->loadXML( $html );
$output = $dom->saveHTML((new \DOMXPath($dom))->query('/')->item(0));
https://3v4l.org/2D0kK
Ответ написан
//$html = mb_convert_encoding( $html, 'HTML-ENTITIES', 'UTF-8' );
$dom = new \DOMDocument('1.0', 'UTF-8');
libxml_use_internal_errors( true );
$dom->loadHTML('<?xml encoding="UTF-8">' . $html);
$dom->preserveWhiteSpace = false;
libxml_clear_errors();
$output = $dom->saveHTML();

var_dump( html_entity_decode($output,ENT_QUOTES,"UTF-8") );

ну вроде вот таким образом все заработало как надо
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rpsv
@rpsv
делай либо хорошо, либо никак
Кодировку в конструктор самого DOMDocument отправьте: https://www.php.net/manual/ru/domdocument.construct.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы