Я использую следующий код:
$doc = new DOMDocument();
$doc->loadHTML("<i><p><strong>From: fsong | #001</strong><br/>I hate you DomDocument :(.</p></i><br/>you'd be surprised<br/>");
echo $doc->saveHTML();
Запуск его в CLI дает мне
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<i><p><strong>From: fsong | #001</strong><br>I hate you DomDocument :(.</p></i><br>you'd be surprised<br>
</body></html>
при запуске через веб-браузер возвращает:
Warning: DOMDocument::loadHTML(): Unexpected end tag : i in Entity, line: 1 in /home/xx/www/test/topic_archiver_test.php on line 50
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<i></i><p><strong>From: fsong | #001</strong><br>I hate you DomDocument :(.</p>
<br>you'd be surprised<br>
</body></html>
Теперь я понимаю, что вложение тега (p) в тег (i) нарушает правила HTML, но я не являюсь ответственным за HTML.По какой-то причине режим CLI возвращает документ так же, как и оригинал, в то время как версия веб-страницы закрывает тег (i) раньше, чтобы поддерживать HTML в правильном состоянии.
Есть ли в моих конфигурациях php.ini что-то, что вызываетразница в поведении?Я проверил официальные документы (http://www.php.net/manual/en/dom.configuration.php)) и, похоже, нет никаких файлов конфигурации или настроек для DomDocument.