Php 我怎样才能知道a标记有时是否包含img作为锚

Php 我怎样才能知道a标记有时是否包含img作为锚,php,xpath,Php,Xpath,我有一些xpath代码,用于循环a标记和检索href、rel标记和anchortext的html代码。但是我不能确定anchortext是否是一个img标签,如果是,我能得到alt标签信息吗 查找链接并检索有关链接的信息 $dom = new \DOMDocument(); @$dom->loadHTML($html); $xpath = new \DOMXPath($dom); $hrefs = $xpath->evaluate("/html/b

我有一些xpath代码,用于循环a标记和检索href、rel标记和anchortext的html代码。但是我不能确定anchortext是否是一个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;
    }
$dom=new\DOMDocument();
@$dom->loadHTML($html);
$xpath=new\DOMXPath($dom);
$hrefs=$xpath->evaluate(“/html/body//a”);
对于($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;
}

上面的方法很好,但我无法确定AnchortText是否是图像,以及它是否是检索alt标记信息。

您可以像检索链接一样使用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');
        }
    }

}
$dom=new\DOMDocument();
@$dom->loadHTML(“”);
$xpath=new\DOMXPath($dom);
$hrefs=$xpath->evaluate(“/html/body/a”);
对于($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;
//获取图像
$nodes=$href->childNodes;
$contentAnImage=0;
$images=array();
foreach($node作为$node){
如果($node->nodeName=='img'){
$contentAnImage=1;
//如果需要图像src:
$images[]=$node->getAttribute('src');
}
}
}

您可以像检索链接一样使用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');
        }
    }

}
$dom=new\DOMDocument();
@$dom->loadHTML(“”);
$xpath=new\DOMXPath($dom);
$hrefs=$xpath->evaluate(“/html/body/a”);
对于($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;
//获取图像
$nodes=$href->childNodes;
$contentAnImage=0;
$images=array();
foreach($node作为$node){
如果($node->nodeName=='img'){
$contentAnImage=1;
//如果需要图像src:
$images[]=$node->getAttribute('src');
}
}
}

它只包含图像,还是可以是图像和文本?我会说,访问节点的
firstChild
,或者在其
childNodes
上循环,如果存在这些节点,请检查它们的
nodeName
。如果它/其中一个是图像,抓取alt属性内容…idom是一个随机url,我在代码中查找特定的url,并检索数据。页面上有各种各样的内部和外部链接。我看不出这些链接与你的问题有什么关系?你想知道一个特定的锚是否包含图像,我给了你一个建议。“页面上有各种各样的内部和外部链接。”-还有…?在你开始查看链接是否包含图像之前,你想通过一个额外的标准来限制链接的选择吗?或者现在说明这一点的意义是什么?如果有时你的锚定标记中包含图像标记,那么只需添加一个检查,通常是一个
,如果使用了
语句,请尝试解释我的问题。childNodes和循环听起来像一个符咒,只是似乎无法让它工作它只包含图像,还是可以是图像和文本?我会说,访问节点的
firstChild
,或者在其
childNodes
上循环,如果存在这些节点,请检查它们的
nodeName
。如果它/其中一个是图像,抓取alt属性内容…idom是一个随机url,我在代码中查找特定的url,并检索数据。页面上有各种各样的内部和外部链接。我看不出这些链接与你的问题有什么关系?你想知道一个特定的锚是否包含图像,我给了你一个建议。“页面上有各种各样的内部和外部链接。”-还有…?在你开始查看链接是否包含图像之前,你想通过一个额外的标准来限制链接的选择吗?或者现在说明这一点的意义是什么?如果有时你的锚定标记中包含图像标记,那么只需添加一个检查,通常是一个
,如果使用了
语句,请尝试解释我的问题。childNodes和循环听起来像一种魅力,只是似乎无法让它工作