Php 如何提取锚点标记中的所有img标记?

Php 如何提取锚点标记中的所有img标记?,php,domdocument,Php,Domdocument,我想使用PHPDOM对象提取锚点标记中的所有img标记 我正在尝试下面的代码,但它得到了所有的锚标记,并使其文本为空,由于一个img标记内 function get_links($url) { // Create a new DOM Document to hold our webpage structure $xml = new DOMDocument(); // Load the url's contents into the DOM @$xml->

我想使用PHPDOM对象提取锚点标记中的所有img标记

我正在尝试下面的代码,但它得到了所有的锚标记,并使其文本为空,由于一个img标记内

function get_links($url) {

    // Create a new DOM Document to hold our webpage structure
    $xml = new DOMDocument();

    // Load the url's contents into the DOM
    @$xml->loadHTMLFile($url);

    // Empty array to hold all links to return
    $links = array();

    //Loop through each <a> tag in the dom and add it to the link array
    foreach($xml->getElementsByTagName('a') as $link) 
    {
       $hrefval = '';
       if(strpos($link->getAttribute('href'),'www') > 0)
       {
           //$links[] = array('url' => $link->getAttribute('href'), 'text' => $link->nodeValue);
           $hrefval = '#URL#'.$link->getAttribute('href').'#TEXT#'.$link->nodeValue;
           $links[$hrefval] = $hrefval;
       }
       else
       {
           //$links[] = array('url' => GetMainBaseFromURL($url).$link->getAttribute('href'), 'text' => $link->nodeValue);
           $hrefval = '#URL#'.GetMainBaseFromURL($url).$link->getAttribute('href').'#TEXT#'.$link->nodeValue;
           $links[$hrefval] = $hrefval;
       }
    }

    foreach($xml->getElementsByTagName('img') as $link) 
    {
        $srcval = '';
       if(strpos($link->getAttribute('src'),'www') > 0)
       {
           //$links[] = array('src' => $link->getAttribute('src'), 'nodval' => $link->nodeValue);
           $srcval = '#SRC#'.$link->getAttribute('src').'#NODEVAL#'.$link->nodeValue;
           $links[$srcval] = $srcval;
       }
       else
       {
           //$links[] = array('src' => GetMainBaseFromURL($url).$link->getAttribute('src'), 'nodval' => $link->nodeValue);    
           $srcval = '#SRC#'.GetMainBaseFromURL($url).$link->getAttribute('src').'#NODEVAL#'.$link->nodeValue;
           $links[$srcval] = $srcval;

       }
    }

    //Return the links
    //$links = unsetblankvalue($links);
    return $links;
} 
函数获取链接($url){
//创建一个新的DOM文档来保存我们的网页结构
$xml=newdomdocument();
//将url的内容加载到DOM中
@$xml->loadHTMLFile($url);
//空数组以保存要返回的所有链接
$links=array();
//循环遍历dom中的每个标记并将其添加到链接数组中
foreach($xml->getElementsByTagName('a')作为$link)
{
$hrefval='';
如果(strpos($link->getAttribute('href'),'www')>0)
{
//$links[]=array('url'=>$link->getAttribute('href'),'text'=>$link->nodeValue);
$hrefval='#URL#'。$link->getAttribute('href')。#TEXT#'。$link->nodeValue;
$links[$hrefval]=$hrefval;
}
其他的
{
//$links[]=array('url'=>GetMainBaseFromURL($url)。$link->getAttribute('href'),'text'=>$link->nodeValue);
$hrefval='#URL#'。GetMainBaseFromURL($URL)。$link->getAttribute('href')。#TEXT#'。$link->nodeValue;
$links[$hrefval]=$hrefval;
}
}
foreach($xml->getElementsByTagName('img')作为$link)
{
$srcval='';
如果(strpos($link->getAttribute('src'),'www')>0)
{
//$links[]=array('src'=>$link->getAttribute('src'),'nodval'=>$link->nodeValue);
$srcval='#SRC#'。$link->getAttribute('SRC')。#NODEVAL#'。$link->nodeValue;
$links[$srcval]=$srcval;
}
其他的
{
//$links[]=array('src'=>GetMainBaseFromURL($url)。$link->getAttribute('src'),'nodval'=>$link->nodeValue);
$srcval='#SRC#'。GetMainBaseFromURL($url)。$link->getAttribute('SRC')。#NODEVAL#'。$link->nodeValue;
$links[$srcval]=$srcval;
}
}
//返回链接
//$links=value($links);
返回$links;
} 
这将分别返回所有锚标记和所有img标记。

代码中strpos()函数的用法不正确

$xml = new DOMDocument;
libxml_use_internal_errors(true);
$xml->loadHTMLFile($url);
libxml_clear_errors();
libxml_use_internal_errors(false);
$xpath = new DOMXPath($xml);
foreach ($xpath->query('//a[contains(@href, "www")]/img') as $entry) {
    var_dump($entry->getAttribute('src'));
}
而不是使用

if(strpos($link->getAttribute('href'),'www') > 0)
使用


不是吹毛求疵,但你错过了一篇结束语<代码>变量转储($entry->getAttribute('src'):)但是在这段代码中,我如何检查一个特定的锚点是否有一个特定的img标记?使用的XPath-“//a/img”将获取所有节点,这些节点都是节点的子节点,但是我在一个文档中有许多单个标记,子节点是img。那么我怎样才能识别哪个标记有哪个img标记?@J.J.如果循环结果,你将只有那些锚,其中有一个图像,你将这些锚作为DOMNodes,因此你可以添加一个ID或一个类来进一步识别它们。(你有没有试过上面的方法?)
 if(strpos($link->getAttribute('href'),'www')!==false )