尝试使用以下正则表达式仅解析数值和单个小数位,但也会解析字符。有任何想法吗?
<?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将使该值不正确。
提前致谢
答案 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的正则表达式存在一些其他问题,特别是一个未闭合的人。