Я анализирую содержимое публикации WordPress через PHP DOMDocument и печатаю только элемент img, как показано ниже:
function myfun($post_id)
{
// Get the post conent
$post = get_post($post_id);
$body = $post->post_content;
// Parse the post content with as UTF-8
// Ref: https://www.php.net/manual/en/intro.dom.php
$doc = new \DOMDocument();
$doc->loadHtml("".$body."");
// Enumerate the DOM tree
$doc_root = $doc->documentElement;
enum_dom($doc_root->childNodes, 0);
}
function enum_dom($nodes, $level)
{
foreach ($nodes AS $item)
{
if (($item->nodeType == XML_ELEMENT_NODE) && ($item->nodeName == 'img'))
{
print $item->nodeName . PHP_EOL;
if($item->childNodes || $item->childNodes->lenth > 0)
{
enum_dom($item->childNodes, $level+5);
}
}
}
}
Но в этом случае код НЕ будет выводить какие-либо элементы img. Однако, если я удалю ($item->nodeName == 'img'), то все элементы будут распечатаны, ВКЛЮЧИТЕ элемент img.
Поскольку img в DOM, почему я не могу отфильтровать его с условием ($item->nodeName == 'img')
Ниже приведен контент сообщения WordPress, который я использую для теста:

Подробнее здесь: https://stackoverflow.com/questions/783 ... omdocument