2012-05-05 10 views
0

を持つ複数のHTML要素をループ:私はこのようになりますページを持っているのDOMDocument

... 
<div class="container"> 

<div class="info"> 
<h3>Info 1</h3> 
<span class="title">Title for Info 1</span> 
<a href="http://www.example.com/1">Link to Example 1</a> 
</div> <!-- /info --> 

<div class="info"> 
<h3>Info 2</h3> 
<span class="title">Title for Info 2</span> 
<a href="http://www.example.com/2">Link to Example 2</a> 
</div> <!-- /info --> 

<div class="info"> 
<h3>Info 3</h3> 
<span class="title">Title for Info 3</span> 
<a href="http://www.example.com/3">Link to Example 3</a> 
</div> <!-- /info --> 

</div> <!-- /container --> 
... 

情報クラスのdiv要素のそれぞれの構造は同じである、と私はループにできるようにしたいのですが文書を介して、そして情報のクラスを持つ各divに対して、csvファイルやHTMLテーブルのような人間が読める形式でデータを出力する目的で、さまざまなコンポーネントを配列または個々の変数に解析します。

私はDOMDocumentメソッドを使用してgetElementByTagNameを使って各タグのコンテンツを抽出しようとしましたが、divに複数のタグタイプ(h3、a、span)が含まれているため、私はやりたいと思っている。

divclass, h3, spanclass, spantitle, ahref, a 
info, Info 1, title, Title for Info 1, http://www.example.com/1, Link to Example 1 
... 

ありがとう:最後に

は、私はこのような形式でデータを置くことができるようにしたいです!

+0

Simple HTML Dom Parserのようなライブラリを使ってみましたか? –

答えて

4
<?php 
$html = ' 
<div class="container"> 

<div class="info"> 
<h3>Info 1</h3> 
<span class="title">Title for Info 1</span> 
<a href="http://www.example.com/1">Link to Example 1</a> 
</div> <!-- /info --> 

<div class="info"> 
<h3>Info 2</h3> 
<span class="title">Title for Info 2</span> 
<a href="http://www.example.com/2">Link to Example 2</a> 
</div> <!-- /info --> 

<div class="info"> 
<h3>Info 3</h3> 
<span class="title">Title for Info 3</span> 
<a href="http://www.example.com/3">Link to Example 3</a> 
</div> <!-- /info --> 

</div> <!-- /container --> 
'; 


$dom_document = new DOMDocument(); 

$dom_document->loadHTML($html); 
$dom_document->preserveWhiteSpace = false; 

//use DOMXpath to navigate the html with the DOM 
$dom_xpath = new DOMXpath($dom_document); 

$elements = $dom_xpath->query("//*[@class='info']"); 

if (!is_null($elements)) { 

    foreach ($elements as $element) { 
    echo "\n[". $element->nodeName. "]"; 

    $nodes = $element->childNodes; 
    foreach ($nodes as $node) { 
     echo $node->nodeValue. "\n"; 
    } 

    } 
} 
+0

ありがとうございます - これは非常に役に立ちます。私がまだ理解できない唯一のことは、aタグからhref値を抽出する方法です。 'if($ node-> nodeName =" a "){echo $ node-> getAttribute( 'href');}' – Andrew

+0

心配しないでください私の部分でエラー。他の人のための働くバージョンは次のとおりです: 'echo $ node-> getAttribute( 'href');' – Andrew

関連する問題