2012-01-31 79 views
2

試圖僅使用以下正則表達式解析數值和單個小數位,但字符也將被解析。有任何想法嗎?PHP中數值和單個小數位的正則表達式

<?php 
function get_rate1(SimpleXMLElement $xml) { 

    $exchange['rate'] = $xml->channel->item[15]->description; 
    $rate = preg_replace("/^([0-9]*|\d*\.\d{1}?\d*)$/", '', $exchange['rate']); 

    echo $rate . '<br />'; 
    return $rate; 
} 
?> 

預期結果:

11.20409 

實際結果:

1 British Pound Sterling = 1.20409 Euro 

期望的結果:

1.20409 

此外,任何想法如何去除第一數字值作爲編號1顯示prio r到英鎊會使值不正確。

在此先感謝

回答

1
if (preg_match("([0-9]+\.[0-9]{1}", $string, $matches)) { 
    echo $matches[1]; 
} else { 
    throw new Exception("GIVE ME NUMBERS, lol"); 
} 

"This is a text 1.234 with a number"應該給"1.2"

不喜歡.123

1

實際匹配數,正則表達式應該是:

'/\d*\.\d/' 

將匹配任何nu小數點前幾位數字(0或更多),正好一個超過它。 Frits van Campen的正則表達式還存在其他一些問題,特別是未公開的正則表達式。