2013-10-24 57 views
0

我想從http://www.kitco.com/market/正則表達式PHP從網站獲取的數據

enter image description here

我能夠從世界現貨價格報廢數據報廢以下數據(圖像粉紅色部分) - 亞洲/歐洲/紐約市場HTML表格下面的表使用以下..但不能夠得到倫敦修復數據..我應該做什麼樣的變化,在下面的正則表達式,因爲我嘗試了很多組合,但它不工作

我的代碼看起來像以下

$html= get_url_contents("http://www.kitco.com/market/"); 
//echo $html; 


preg_match_all('!Gold\s+([0-9.]+)\s+([0-9.]+)!i',$html,$matches); 

$patt = "/<td[^>]*width=['\"]68['\"][^>]*>([0-9\.]+)<\/td>\s*<td[^>]*width=['\"]68['\"][^>]*>([0-9\.]+)<\/td>/i"; 

回答

0

請不要用正則表達式解析HTML(你可以看到爲什麼在this必須發佈)。

也就是說,您可以使用HTML解析器,例如Simple HTML DOM Parser來處理表格。看看this之前的SO帖子,以正確的方向開始。

編輯:根據您的評論,你可以嘗試做這樣的事情:<td bgcolor=".+?">\s*<p>\s*(.+?)\s*</p>\s*</td>。不過,我建議針對這種方法。

這將匹配並將值放入正則表達式組中,然後您可以稍後訪問它們。

注意:同樣根據你的評論,你提出的正則表達式也是易受影響的風格變化,所以如果他們改變列的width,你的正則表達式很可能會失敗。

+0

但正則表達式很適合我..我已經解析了另一個表使用 – user580950

+1

@ user580950:我已經修改了我的答案以包含正則表達式。但是,就像我在回覆中所說的,這不是(正確的)方式。 – npinti