У меня есть следующая проблема. Когда HTML начинается с <img>
тега, и я сохраняю $dom->saveHTML()
Я получаю только первое изображение в качестве ответа. Но когда я добавляю любую строку перед тегом <img>
, я получаю дополнительный <p></p>
тег для HTML. Почему это?php domDocument() saveHTML сохранить только первое изображение, когда HTML начинается с <img>
$h = '<img src="https://example.com/one.jpg" alt=""><br><p>bla</p><img src="https://example.com/foo.jpg" alt=""><br>';
$h = 'abc<img src="https://example.com/one.jpg" alt=""><br><p>bla</p><img src="https://example.com/foo.jpg" alt=""><br>';
Выше приведены примеры входов
<?php
$h = '<img src="https://example.com/one.jpg" alt=""><br><p>bla</p><img src="https://example.com/foo.jpg" alt=""><br>';
echo'start<br />';
echo htmlspecialchars($h);
echo'<br />end<br />';
$dom = new domDocument();
$dom->loadHTML($h, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
$img_class = $image->getAttribute('class');
if($img_class == '') {
$image->setAttribute('class', 'img-responsive img-rounded');
echo'add class <br />';
}
}
$my_post_content = $dom->saveHTML();
echo'start<br />';
echo htmlspecialchars($my_post_content);
echo'<br />end<br />';