Php 我怎样才能知道a标记有时是否包含img作为锚
我有一些xpath代码,用于循环a标记和检索href、rel标记和anchortext的html代码。但是我不能确定anchortext是否是一个img标签,如果是,我能得到alt标签信息吗 查找链接并检索有关链接的信息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
$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和循环听起来像一种魅力,只是似乎无法让它工作