你好,我用这个方法用span标签PHP的DOMDocument跳过偶数元素
$string = clean($string);
$dom = new \DOMDocument;
$dom->loadHTML(mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$iframes = $dom->getElementsByTagName('iframe');
foreach($iframes as $iframe) {
$src = $iframe->getAttribute('src');
$span = $dom->createElement('span');
$span->setAttribute('title', $src);
$span->setAttribute('class', 'lazy-youtube');
$iframe->parentNode->replaceChild($span, $iframe);
}
$images = $dom->getElementsByTagName('img');
foreach($images as $image) {
$src = $image->getAttribute('src');
$span = $dom->createElement('span');
$span->setAttribute('title', $src);
$span->setAttribute('class', 'lazy-image');
$image->parentNode->replaceChild($span, $image);
}
$html = $dom->saveHTML();
return clean($html);
全部更换iframe和IMG标签,但问题是,它跳过元素它总是这样
// Iframe
<span>
<iframe>
<span>
<iframe>
<span>
<iframe>
<span>
<iframe>
// Img
<span>
<img>
<span>
<img>
<span>
<img>
<span>
<img>
HTML代码中的I帧
<div class="content">
<p>
<iframe frameborder="0" height="315" src="https://www.youtube.com/embed/T6kG5vuPVSs?rel=0" width="560"></iframe>
<p>
</p>
<iframe frameborder="0" height="315" src="https://www.youtube.com/embed/GjnadPBMJGs?rel=0" width="560"></iframe>
<p>
</p>
<iframe frameborder="0" height="315" src="https://www.youtube.com/embed/KYm8SLLQ0kk?rel=0" width="560"></iframe>
<p>
</p>
<iframe frameborder="0" height="315" src="https://www.youtube.com/embed/xUVz4nRmxn4?rel=0" width="560"></iframe>
<p>
</p>
<iframe frameborder="0" height="315" src="https://www.youtube.com/embed/hmZ6ziQJByY?rel=0" width="560"></iframe>
</p>
</div>
所有相同类型的元素具有相同的属性,唯一的SRC是不同的。任何人都知道我该如何解决它以取代所有元素?
可能当您更换元素时,数组/对象会发生变化,将剩余的点移动到一个点上,然后滑动下一个点。这就是为什么我认为它跳过了。 – FirstOne
@FirstOne,我该如何解决这个问题? – allyfai
@FirstOne在数据库中存储html时使用这种方法,效率不高,你的意思是,它不会一直工作,或者它需要大量的时间来渲染它? – allyfai