2013-01-10 75 views
0

我有一個HTML塊這裏:如何使用PHP DOMDocument解析HTML?

<div class="title"> 
    <a href="http://test.com/asus_rt-n53/p195257/"> 
     Asus RT-N53 
    </a> 
</div> 
<table> 
    <tbody> 
     <tr> 
      <td class="price-status"> 
       <div class="status"> 
        <span class="available">Yes</span> 
       </div> 
       <div name="price" class="price"> 
        <div class="uah">758<span> ua.</span></div> 
        <div class="usd">$&nbsp;62</div> 
       </div> 

如何解析鏈接(http://test.com/asus_rt-n53/p195257/),標題(Asus RT-N53)和價格(758)?

捲曲代碼在這裏:

$dom = new DOMDocument(); 
$dom->preserveWhiteSpace = false; 
$dom->loadHTML($content); 
$xpath = new DOMXPath($dom); 
$models = $xpath->query('//div[@class="title"]/a'); 
foreach ($models as $model) { 
    echo $model->nodeValue; 
    $prices = $xpath->query('//div[@class="uah"]'); 
    foreach ($prices as $price) { 
     echo $price->nodeValue; 
    } 
} 
+1

什麼是與您當前密碼的問題? –

+0

所以我得到一個名稱和價格,但我需要更多和一個鏈接。而且頁面上的這些單位並不多,因爲它可以在一個循環中執行? 而現在看起來像 雜牌 -Price - ....... -Price ,這是必要的: -Name -Price 連桿式 – Dima

+1

您必須閱讀'href'屬性。也許這有助於:http://stackoverflow.com/questions/6856668/domdocument-read-tag-attributes-classes。 –

回答

0

一個醜陋的解決方案是投價結果只保留數字:

echo (int) $price->nodeValue; 

或者,您可以查詢到找到DIV中的跨度,和從價格上取下(價格的foreach內):

$span = $xpath->query('//div[@class="uah"]/span')->item(0); 
$price->removeChild($span); 
echo $price->nodeValue; 

編輯:

要檢索的鏈接,只需使用getAttribute()並得到href一個:

$model->getAttribute('href') 
+0

與一切的價格是好的,但如何獲得鏈接? Dima

+0

非常感謝! – Dima