2011-02-09 15 views
1

こんにちは、 curl関数は、最初のdivが<td>の内部にさまざまな値を持つテーブルを保持する、通常のhtml - > 2個のdivを含む文字列$ widgetを返します。preg_match()はテーブル内のすべての値を見つけるか?

私は<td>の中のすべての値だけを抽出するための最も簡単で最良の方法は何だろうかと思いますので、残りのHTMLなしで空白の値があります。

preg_matchのパターンはどのようなものになりますか?

ありがとうございました。

+0

使用http://simplehtmldom.sourceforge.net/ –

+0

**は、[HTMLのDOMパーサーの代わりに](HTTPを使用しています。 sourceforge.net/) –

答えて

1

:ここでは例です

$html = <<<HTML 
<div> 
<table> 
    <tr> 
     <td>foo</td> 
     <td>bar</td> 
    </tr> 
    <tr> 
     <td>hello</td> 
     <td>world</td> 
    </tr> 
</table> 
</div> 
<div> 
    Something irrelevant 
</div> 
HTML; 

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 

$tds = $xpath->query('//div/table/tr/td'); 
foreach ($tds as $cell) { 
    echo "{$cell->textContent}\n"; 
} 

なり出力:

foo 
bar 
hello 
world 
2

正規表現は適切な解決策ではありません。 DOMDocumentに読み込んで解析するほうがよいでしょう。

1

HTMLを解析するためにregexpsを使用しないでください。代わりにDOMXPathを使用してください。あなたは、そのタスクのためのDOMパーサを使用してオフに賭けている

$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$xpath = new DOMXPath($doc); 
$nodes = $xpath->query('//td'); 
$result = array(); 
foreach ($nodes as $node) { 
    $result[] = $node->nodeValue; 
} 
// $result holds the values of the tds 
0

あなたは非常に限られている場合にのみ、よく定義されたHTMLでは、正規表現で解析することが期待できます。 highest ranked SO answer of all timeはこの問題を解決します。 // simplehtmldom:ドン**はHTMLを解析するために正規表現を使用し

彼が来る...

関連する問題