Я использую код, приведенный ниже, чтобы получить требуемый контент из HTML от DOMDocument,
$subject = 'some html code';
$doc = new DOMDocument('1.0');
$doc->loadHTML($subject);
$xpath = new DOMXpath($doc);
$result = $xpath->query("//div");
$docSave = new DOMDocument('1.0');
foreach ( $result as $node ) {
$domNode = $docSave->importNode($node, true);
$docSave->appendChild($domNode);
}
echo $docSave->saveHTML();
Проблема в том, что если в теме HTML $ есть специальный символ, такой как пробел или новая строка, тоэто преобразовано в право html.Входной HTML имеет хорошую форму, и некоторые специальные символы также находятся внутри путей в тегах, например:
$subject = '<div><a href='http://www.site.com/test.php?a=1&b=2, 3,
4'></a></div>';
будет выдавать:
<div><a href='http://www.site.com/test.php?a=1&b=2,%203,%0A%204'></a></div>
вместо:
<div><a href='http://www.site.com/test.php?a=1&b=2, 3,
4'></a></div>'
Что можно сделать, чтобы исключить преобразование специальных символов в их сущности, если хотите сохранить недопустимый HTML-код?
Я пытался установить для этого флага substituteEntities значение false, ноУ меня нет улучшений, может я неправильно это использовал?некоторые примеры кода были бы очень полезны.