2011-02-16 99 views
2

我能夠使用DOM解析另一個頁面。我能夠檢索hrefs,imgs等等使用php解析html

上。我應該如何解析這個?

<span class="abc up" id="price">+9395</span> 
+1

你想擺脫它呢? – Jacob 2011-02-16 05:35:30

+0

the vlaue:+9395 – ineedhelp 2011-02-16 05:36:22

+0

它是在一個HTML文檔中,還是由它自己?我們需要看一個案例。你是通過班級還是身份證來識別的? – Jonah 2011-02-16 05:38:02

回答

3

假設你有一個DOMElement,可以通過訪問nodeValue屬性中獲得的價值...下例:

<?php 
$doc = new DOMDocument(); 
$doc->loadHTML('<span class="abc up" id="price">+9395</span> '); 

$elements = $doc->getElementsByTagName('span'); 

echo $elements->item(0)->nodeValue; 

我以爲你已經找到已節點......正如阿利斯泰爾說你可以使用XPath。

http://de.php.net/manual/en/domxpath.query.php

$xpath = new DOMXPath($doc); 
$spans = $xpath->query('//span[@id="price"]'); 
echo $spans->item(0)->nodeValue; 

要確定的XPath您可以使用各種現代瀏覽器並尋找一個獨特的路徑所需的元素。

0

或者你可以使用XPath也做到這一點:

<?php 
$html = '<span class="abc up" id="price">+9395</span>'; 

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

$results = $xpath->query('//span'); 

foreach($results as $result) { 
    echo $result->nodeValue . PHP_EOL; 
} 

,將顯示爲span元素的所有值。如果你想按id搜索,你可以使用// span [@ id =「price」]和class // [span class =「abc up」]

1

對於HTML(或XML)的非平凡解析, ,你需要的東西,可以智能地遍歷DOM,像DOM文檔或QueryPath,或XPath,等等。但是,很瑣碎的情況下,這似乎是一個可以簡單地使用strip_tags

echo strip_tags('<span class="abc up" id="price">+9395</span>'); 

產生+9395

0

使用simple html dom

//turn the html into a dom object: 
$html = str_get_html('<span class="abc up" id="price">+9395</span>'); 

//find the first element with id "price": 
$node->find('#price', 0); 

//grab its inner text: 
echo $node->innertext; 

它使用CSS3樣式選擇,這是很好的