Php 如何从特定页面模板上的_content()中删除所有包含或不包含链接的图像

Php 如何从特定页面模板上的_content()中删除所有包含或不包含链接的图像,php,wordpress,dom,Php,Wordpress,Dom,我试图去除所有的和周围的而不是使用preg\u replace。 朝着正确的方向努力会很好,因为我是PHP新手 好的,我会回答我自己的问题,但首先感谢你把我推向了正确的方向。我的结果基于stackoverflow的问题 它使用而不是preg\u replace(),就像我在许多示例中看到的那样。 需要提及的一点是,我需要使用获取内容()而不是内容(),因为内容()会回显过滤结果。但是在中有一个提示,提示如何过滤获取内容(),以获得与内容()相同的输出 下面是我想要的代码: $dom = new

我试图去除所有的
和周围的
而不是使用
preg\u replace

朝着正确的方向努力会很好,因为我是PHP新手

好的,我会回答我自己的问题,但首先感谢你把我推向了正确的方向。我的结果基于stackoverflow的问题

它使用而不是
preg\u replace()
,就像我在许多示例中看到的那样。
需要提及的一点是,我需要使用
获取内容()
而不是
内容()
,因为
内容()
会回显过滤结果。但是在中有一个提示,提示如何过滤
获取内容()
,以获得与
内容()相同的输出

下面是我想要的代码:

$dom = new DOMDocument;
$dom->loadHTML(get_the_content());
$xpath = new DOMXPath($dom);

$nodes = $xpath->query('//img|//a[img]');
foreach($nodes as $node) {
    $node->parentNode->removeChild($node);
}
$no_image_content = $dom->saveHTML();
$no_image_content = apply_filters('the_content', $no_image_content);
$no_image_content = str_replace(']]>', ']]>', $no_image_content);
echo $no_image_content;

往正确的方向推:用DOM删除元素的样板代码总是一样的。你可以在上面的链接中找到足够的例子。唯一不同的是如何获得元素。要使用图像子级获取所有a元素,请使用
//a[img]
。要获取所有图像,请
//img
。您可以通过将
|
放在两者之间来组合这两者。谢谢@Gordon,我将查看上面的示例,并在收到一些信息后进行报告。