Php 通过标记名获取多个元素,并在循环中检查元素标记以响应它

Php 通过标记名获取多个元素,并在循环中检查元素标记以响应它,php,dom,Php,Dom,这是一个有效的代码示例 $doc->loadHTML($article_header); $imgs = $doc->getElementsByTagName('img'); foreach ($imgs as $img) { $imgs从标记名为img的$doc元素中提取,然后我执行一些操作 现在我想获取elementsbytagname>img或iframe,然后使用$img检查这是哪个元素,如果是iframe或img,则回显 如果可能,请修改我的代码。最好使用以下方法,因为通

这是一个有效的代码示例

$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
$imgs
从标记名为
img
$doc
元素中提取,然后我执行一些操作

现在我想获取elementsbytagname>img或iframe,然后使用$img检查这是哪个元素,如果是iframe或img,则回显


如果可能,请修改我的代码。

最好使用以下方法,因为通过使用此代码,如果对象中没有“
iframe
”/“
img
”标记“
$doc
”(因为您正在使用“
count()
”完美地检查任何元素的存在性)功能):-


希望有帮助。

您可以在DOM文档中使用XPath,如下所示:

$doc->loadHTML($article_header);
$xpath = new DOMXpath($doc);

$imagesAndIframes = $xpath->query('//img | //iframe');

$length = $imagesAndIframes->length;
for ($i = 0; $i < $length; $i++) {
    $element = $imagesAndIframes->item($i);

    if ($element->tagName == 'img') {
        echo 'img';
    } else {
        echo 'iframe';
    }
}
$doc->loadHTML($article\u header);
$xpath=新的DOMXpath($doc);
$imagesAndIframes=$xpath->query('//img |//iframe');
$length=$imagesAndIframes->length;
对于($i=0;$i<$length;$i++){
$element=$imagesAndIframes->item($i);
如果($element->tagName=='img'){
回声“img”;
}否则{
回声“iframe”;
}
}

对不起,我要求的是一点不同的东西,如果不是这个,你要求的是什么?知识渴求将IMG与iFrame分开,我不喜欢这样。我认为你的方法更适合我,所以我选择了它,非常感谢你用你的逻辑启发我们所有人!
$doc->loadHTML($article_header);
$xpath = new DOMXpath($doc);

$imagesAndIframes = $xpath->query('//img | //iframe');

$length = $imagesAndIframes->length;
for ($i = 0; $i < $length; $i++) {
    $element = $imagesAndIframes->item($i);

    if ($element->tagName == 'img') {
        echo 'img';
    } else {
        echo 'iframe';
    }
}