2011-03-16 25 views
1

我需要從這個html刮數622104從分開的跨度刮一個數

我怎樣才能得到這個數字?

<div class="numbersBackground"> 
     <div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl00_numberPanel" class="number"> 
     <div class="numberWrapper"><span>6</span></div> 
    </div><div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl01_numberPanel" class="number"> 
     <div class="numberWrapper"><span>2</span></div> 
    </div><div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl02_numberPanel" class="number"> 
     <div class="numberWrapper"><span>2</span></div> 
    </div><div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl03_commaPanel" class="comma"> 

    </div><div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl04_numberPanel" class="number"> 
     <div class="numberWrapper"><span>1</span></div> 
    </div><div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl05_numberPanel" class="number"> 
     <div class="numberWrapper"><span>0</span></div> 
    </div><div id="ctl00_mainContent_playersOnlineNumberRepeater_ctl06_numberPanel" class="number"> 
     <div class="numberWrapper"><span>4</span></div> 
    </div> 
</div> 

回答

2

使用DOMDocument類來解析HTML字符串,這要歸功於其loadHTML方法,你可以使用XPath查詢(使用DOMXpath類)找到所有<div>標籤與class="numberWrapper"屬性。

然後,迭代這些,將它們的內容連接到一個變量 - 在循環結束時,它將包含您的數字。


例如,你可以有這樣的代碼:

$str = <<<HTML 
... HERE YOUR HTML ... 
HTML; 

$number = ''; 

$dom = new DOMDocument(); 
if ($dom->loadHTML($str)) { 
    $xpath = new DOMXpath($dom); 
    $results = $xpath->query('//div[@class="numberWrapper"]'); 
    foreach ($results as $div) { 
     $number .= $div->nodeValue; 
    } 
} 

var_dump($number); 

而且,作爲輸出,你會得到:

string '622104' (length=6) 


你也可以使用下面的XPath查詢,以確保您只使用<span>標籤:

$results = $xpath->query('//div[@class="numberWrapper"]/span'); 

在這裏,由於<div>只包含<span>,結果將是相同的 - 但在其他情況下可能會改變。


當然(只是爲了確保它的說):正則表達式是不是從一個HTML字符串中提取信息以正確的方式。註釋後



編輯:

如果有其他<div>是你不想考慮,你必須找到另一個XPath查詢 - - 與您想要提取的內容相匹配。

例如,也許這樣的事情會做的伎倆:

$results = $xpath->query('//div[@class="numbersBackground"]//div[@class="numberWrapper"]/span'); 

當然,你來搞清楚你的​​HTML文檔的結構相匹配。


如果你想下載HTML,你有兩個解決方案:


一點題外話,如果你得到警告之前,你的HTML是無效的,你會想看看在libxml_use_internal_errors()功能;-)

+0

+1道:「」如果正確的解決方案輸入可以被信任爲格式良好。打敗我吧。 – Jon 2011-03-16 19:14:13

+0

@Jon'DOMDocument :: loadHTML'接受不是XML有效的代碼:它可以與破碎的HTML一起工作 - 如果不是*太*破碎的話。 – 2011-03-16 19:15:47

+0

如果有更多的div與一個數字包裝的類什麼?以及我將用什麼方法將腳本引導至網頁,而不是輸入字符串http://www.bungie.net/stats/reach/online.aspx – AndrewFerrara 2011-03-16 19:19:09

相關問題