2012-05-05 12 views
-1

SimpleHTMLDOMを使用して他のWebページのものを取得していますが、画像のアンカータグ内にURLを取得する方法に問題があります。画像のアンカータグとして!しかし、私はちょうど画像のアンカータグの横にhref値を取得したい!SimpleHtmlDOMを使用して画像のアンカータグ内にURLを取得する方法

<a href="I DO NOT NEED THIS VALUE"><a/> 


<a href="I NEED THIS VALUE"><img src="xxxx"><a/> 

DOMを呼び出すと、アンカーURLを含むすべてのhref URLが返されます。私はイメージのアンカータグ内のURLが必要です!

私はあなたがイメージタグを含むすべてのリンクのhref属性を必要とする

$hrefl = $html->find('a'); 

$count = 1; 

for($i = 0; $i < 50; $i++){ 

       echo $hrefl[$count]->href; 
       $count++; 

} 
+0

あなたは$ HTML-を試してみました>( 'IMG')を見つけるセレクタ?これで、アンカータグだけをイメージタグの周りに巻きつける必要があります。 – Daxcode

+0

はい!しかし、私はsrc = "xx"値をhref値ではなく得ることができます! : –

答えて

3

..呼び出すために、このコードを使用します。 XPathので、それは非常に簡単です:

//a/img/../@href 

あなたはDOMを使用することを書いて、あなたのコードは、単純なHTML DOMと書かれたように見えます。そのライブラリは限られており、PHPはDOMDocumentDOMXPathというオブジェクトを持っているため、現在は必要ありません。私はおそらく、あなたは私がすべての私の解析の目的のためにDOMDocumentを使用し、非常に認識して、それのない午前解析する目的 ためsimplehtmldom libraryを使用している

$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$xpath = new DOMXPath($doc); 
$hrefs = $xpath->query('//a/img/../@href'); 
$count = $hrefs->length; 
foreach($hrefs as $href) 
{ 
    echo $href->nodeValue, "\n"; 
} 

Demo

+0

そのページには多くの画像タグがあります。DOMDocumentを使用してそれらを表示することは可能ですか?私はただ一つの結果しか得られないと思います!私は本当にDOMdocumentを知っていません...助けてください! –

+0

確かに、 DOMDocumentについてのドキュメントはここにあります:http://php.net/DOMDocument – hakre

+0

それは動作します...私を助けるために時間をとってthnxの友人! –

4

、単純なHTML DOMは何のXPathを持っていないと思います。

私が提案できる非常に速い解決策は、アンカータグがその内部にイメージを持っているかどうかをチェックし、そうであれば値を取得し、それ以外の場合はスキップします。このような

何か:

<?php 
    $doc = new DOMDocument(); 
    @$doc->loadHTMLFile($urlofhtmlpage); 

    foreach($doc->getElementsByTagName('a') as $a){ 
     foreach($a->getElementsByTagName('img') as $img){ 
      echo $a->getAttribute('href'); 
     } 
    } 
?> 
+0

ちょっとこれは本当に動作します!ありがとうbroo ! –

+0

このコードは、hrefとimgの両方のタグを制御できるので、より適しています。thanks @swapnilsarwe – lukesUbuntu

+0

私はあなたを助けてくれてうれしいです... – swapnilsarwe

3

これを試してみてください。

$hrefl = $html->find('a'); 

$count = 1; 

for($i = 0; $i < 50; $i++){ 
    $img = $hrefl[$count]->find('img'); 
    // check if var exists and is valid    
    if ($img ...) { 
    echo $hrefl[$count]->href; 
    } 
    $count++; 
}