2011-07-28 13 views
0

私は、そのページの構成に応じて列の数が変わる可能性があるテーブルを持っています。私は列の見出しで指定された特定の列からの情報だけを取得したい。ここで特定のコンテンツを取得しているWebページのスクラップを手助けする必要があります...

は単純化されたテーブルです:

<table> 
<tbody> 
<tr class='header'> 
    <td>Image</td> 
    <td>Name</td> 
    <td>Time</td> 
</tr> 
<tr> 
    <td><img src='someimage.png' /></td> 
    <td>Name 1</td> 
    <td>13:02</td> 
</tr> 
<tr> 
    <td><img src='someimage.png' /></td> 
    <td>Name 2</td> 
    <td>13:43</td> 
</tr> 
<tr> 
    <td><img src='someimage.png' /></td> 
    <td>Name 3</td> 
    <td>14:53</td> 
</tr> 
</tbody> 
</table> 

私はテーブルの名前(列2)を抽出したいです。しかし、前述したように、列の順序を知ることはできません。たとえば、Imageカラムがそこにないかもしれません。その場合、私が望むカラムが最初のカラムになります。

DomDocument/DomXPathでこれを行う方法があるのだろうかと思っていました。おそらく、最初のtrの文字列「名前」を検索し、それがどの列インデックスであるかを調べ、それを使用して情報を取得します。それほど洗練されていない解決方法は、最初の列にimgというタグがあるかどうかを確認することです。その場合、イメージの列が最初であるため、そのようにスローして次の行を使用します。

約1時間半見ていますが、私はDomDocumentの機能と操作に慣れていません。この問題に悩まされています。

答えて

0

Simple HTML DOM Parserが有用であり得る。マニュアルを確認することができます。基本的には、次のようなものを使うべきです。

$url = "file url"; 
$html = file_get_html($url); 
$header = $html->find('tr.header td'); 
$i = 0; 
foreach ($header as $element){ 
if ($element->innerText == 'Image') { $num = $i; } 
$i++; 
} 

どの列($ num)が画像列であるかがわかりました。改善のためにコードを追加することができます。

PS:すべての画像ソースを簡単に見つける方法。

$images = $html->find('tr td img'); 
foreach ($images as $image){ 
$imageUrl[] = $image->src; 
} 
+0

PHPのDOMDocumentは、同じアプリケーションの他のものに既に使用していると考えれば、むしろ使用します。 =) – Ryan

+0

でも、それは私が探していたものではなく、あなたは正しい方向に私を指摘しました。そのために、私はあなたに答えを与えます。 =) – Ryan

+0

ありがとう@ライアン。私はDomDocumentのドキュメンテーションをチェックしました。この場合、あなたが望むことをするためにはもっと努力が必要です。 – Turcia

関連する問題