2012-05-27 85 views
0

我試圖獲得preg_match的竅門,但我無法選擇我想要的正則表達式。使用來自XML訂閱源的preg_match

我使用herehttp發現了一個XML飼料://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

我想找到一種貨幣,它的價值。它是作爲一個數組打印的,所以我很困惑如何做到這一點。我需要循環嗎?即使我這樣做,我仍然沒有想出preg_match部分。

<? 
$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml'); 
//print_r($xml); 

preg_match('/ USD \= \(([0-9\.\,]+)\)$/',$xml,$match); 

echo $match[1]; 
echo $match[2]; 

?> 

任何幫助將不勝感激!

編輯 - 我試圖讓PHP的網站上使用我的鏈接工作的例子,但我有一堆的錯誤。下面是我有

<? 

$string = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml'); 

$xml = new SimpleXMLElement($string); 

$result = $xml->xpath('b/c'); 

while(list(, $node) = each($result)) { 
    echo 'b/c: ',$node,"\n"; 
} 
?> 

回答

2

您正在使用SimpleXML庫,因此您可以使用xpath function

容易的解決方案是按照(this)說明:

$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml'); 

foreach($xml->Cube->Cube->Cube as $rate){ 
    if ($rate["currency"] == 'WANTED CURRENCY') { 
    echo $rate["rate"].' '.$rate["currency"].'<br/>'; 
    } 
} 
+0

你介意看我的更新。我似乎無法讓它工作,即使使用PHP的網站代碼 – user1406951

+0

@ user1406951請看這裏http://stackoverflow.com/questions/10281849/php-parse-exchange-rate-feed-xml - 第一個答案將解決您的問題:) – Slawek

+0

太棒了,這有助於至少讓它輸出,但我仍然希望能夠爲一種貨幣進行preg_match。 – user1406951

1

如果你想使用正則表達式,你能試試這個表達嗎?

USD' rate='(.*)' 

我喜歡使用這個網站的時候幫助我與我的表情: http://gskinner.com/RegExr/

在這種情況下,我得到了XML的內容用的file_get_contents,粘貼他們在箱子在這個網站,開始使用頁面頂部的欄進行表達。在您輸入時,您會自動查看下面的框中是否有任何匹配項。

+0

我對你提供的鏈接感到困惑。我理解你對複製內容所說的話,但我不明白標誌,捕獲的分組等等。 – user1406951

+0

哦,粘貼xml後,點擊頂部的白色條(在'match'下面),然後開始輸入表達式。它真的可以幫助您實時看到它。例如,對於你的XML,我輸入USD'rate =',我看到它的工作。我用()添加了一個捕獲組,並用'關閉了它。這就是你需要的。現在你到底部尋找'RegExp:'(它是列表中的第一個)你在斜槓之間複製所有內容。這是你對這個功能的表達。 –

+0

嗯,出於某種原因,它不適用於鉻合金。我用firefox打開它並開始工作。難怪我爲什麼如此困惑。 – user1406951

相關問題