2012-01-31 156 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的正则表达式还存在其他一些问题,特别是未公开的正则表达式。