首页 > 解决方案 > 我如何找出某个标签是否包含一个 img 作为锚点

问题描述

我有一些 xpath 代码循环用于 a-tag 的 html 代码并检索 href、rel-tags 和锚文本。但我无法确定锚文本是 img 标签,如果是,我可以获得 alt 标签信息吗?

用于查找链接并检索有关它们的信息。

    $dom = new \DOMDocument();

    @$dom->loadHTML($html);
    $xpath = new \DOMXPath($dom);

    $hrefs = $xpath->evaluate("/html/body//a");   
    for ($i = 0; $i < $hrefs->length; $i++) {

        $href = $hrefs->item($i);
        //$img = $href->evaluate("img");

        $url = $href->getAttribute('href');
        $rel = $href->getAttribute('rel');
        $anchortext=$href->nodeValue;
    }

以上工作正常,但我无法弄清楚如何确定锚文本是否是图像,以及是否检索 alt 标签信息。

标签: phpxpath

解决方案


您可以像使用 xpath 一样检索链接:

$dom = new \DOMDocument();

@$dom->loadHTML('<html><body><a href="index.php"><img src="img.png">sdqsdsdq</a>');
$xpath = new \DOMXPath($dom);

$hrefs = $xpath->evaluate("/html/body/a");
for ($i = 0; $i < $hrefs->length; $i++) {

    $href = $hrefs->item($i);
    //$img = $href->evaluate("img");

    $url = $href->getAttribute('href');
    $rel = $href->getAttribute('rel');

    $anchortext=$href->nodeValue;

    // get images
    $nodes = $href->childNodes;
    $contentAnImage = 0;
    $images = array();
    foreach ($nodes as $node) {
        if ($node->nodeName == 'img'){
            $contentAnImage = 1;
            // if you want the image src:
            $images[] = $node->getAttribute('src');
        }
    }

}

推荐阅读