我有以下问题。当HTML从<img>
标记开始,我保存$dom->saveHTML()
我只收到第一个图像作为响应。但是,当我在<img>
标记之前添加任何字符串时,我会为HTML获取额外的<p></p>
标记。这是为什么?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 />';