我试图使用Simple HTML DOM Parser来查看我的WordPress帖子的内容,并将所有图片移到帖子的末尾,无论它们在实际的html中的位置。
我使用以下方法成功隔离了所有图像:
$html = str_get_html(wpautop(get_the_content()));
foreach($html->find('img') as $element) echo $element->src . '<br>';
根据文档。 (这只是根据网站上给出的示例打印图像源,因为我还在尝试)。
但是,我无法弄清楚如何找到除图像之外的所有元素 - documentation具有查找没有属性的元素的选项,但这并不是似乎适用。
我可以像这样选择多个元素:
$ret = $html->find('a, p');
...但是我要么必须猜测要使用哪些标签,要么包含不是img的每个标签,这将是一个巨大且不可靠的列表。有没有办法解决这个问题?
答案 0 :(得分:0)
使用PHP的DOM classes,你可以这样做:
$doc = new \DOMDocument();
@$doc->loadHTML(get_the_content());
$xpath = new \DOMXPath($doc);
foreach ($xpath->query('//*[name() != "img"]') as $node) {
// do stuff here
}
答案 1 :(得分:-1)
由于我想将图像与内容的主体分开,最简单的方法是将它们放入一个数组中,然后在撤回之前将它们从DOM中删除(as suggested here),如下所示: / p>
$html = str_get_html(wpautop(get_the_content()));
$images = array();
foreach($html->find('img') as $element) :
$images[] = $element->src; // Puts the image source into an array
$element->outertext = ''; // and then removes it from the DOM.
endforeach;
echo $html;
print_r($images);
这只返回没有图像的帖子的内容,然后显示图像数组,然后我可以运行foreach来显示。