2011-06-27 3 views
5

私はdivでphp(string)を取得しましたが、コンテンツを取得したいと考えています。例えばPHPでdivコンテンツを取得するには

<div id="product_list" style="width:100%; float:none;"> 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
</div> 

と私はスタイルが変化している

<div> 
    bla bla bla 
</div> 
    bla bla 

をしたい、私は唯一のdivのidを知っています。

が、これはturbodソースと同じ私のコードであり、結果があまりにも同じです

を更新しました。

ので、これはオリジナルのhtml

$doc = new DOMDocument(); 
$doc->loadHTML($buffer); 
$id = $doc->getElementById('product_list') 

されており、このコードの後に​​、私は次を得る:link

+0

私は '$のid'を宣言し、あなたの「更新」のコードの最後の行は、のためにセミコロンで従うべき正しいアム...十分に行うことではありませんPHPの構文ですか? – HelpingHand

答えて

16

PHPのDOMDOCUMENTクラスを使用します。 http://www.php.net/manual/en/class.domdocument.php

$dom = new DOMDocument(); 

$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$divContent = $xpath->query('//div[id="product_list"]'); 
+0

ここに貼り付けたコードを実行するために必要な外部ライブラリはありますか?コードは私のサーバー上で直接動作していないため、私はこれを尋ねます。 – HelpingHand

+0

いいえ、ただし、libxml PHP拡張機能が必要です。 http://www.php.net/manual/en/dom.requirements.php phpinfo()を確認してください。エラーメッセージがありますか? – turbod

1

XML/HTMLフラグメントを保存するには、あなたはそれぞれの子ノードを保存する必要があります。

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

$xpath = new DOMXPath($dom); 
$result = ''; 
foreach($xpath->evaluate('//div[@id="product_list"]/node()') as $childNode) { 
    $result .= $dom->saveHtml($childNode); 
} 
var_dump($result); 

出力:

string(74) " 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
" 

あなただけのテキストの内容が必要な場合は、することができます直接受け取る:

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

$xpath = new DOMXPath($dom); 
var_dump(
    $xpath->evaluate('string(//div[@id="product_list"])') 
); 

出力:

string(63) " 

     bla bla bla 

     bla bla   
" 
関連する問題