PHP中数值和单个小数位的正则表达式

时间:2012-01-31 20:57:03

标签: php regex preg-replace

尝试使用以下正则表达式仅解析数值和单个小数位,但也会解析字符。有任何想法吗?

<?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将使该值不正确。

提前致谢

2 个答案:

答案 0 :(得分: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 :(得分:1)

实际上,正则表达式应该是:

'/\d*\.\d/'

这将匹配小数点前的任意数字(0或更多),并且恰好超过它。 Frits van Campen的正则表达式存在一些其他问题,特别是一个未闭合的人。