正则表达式以获取数字和小数

时间:2012-02-01 16:50:09

标签: php regex preg-replace

我试图访问

  

1.20163

来自以下内容:

  

1英镑= 1.20163欧元

到目前为止,我有:

$exchange['rate'] = $xml->channel->item[15]->description;
$rate = preg_match('/^[0-9]{1,}$/', '', $exchange['rate']);

然而,这似乎回归

  

1英镑= 1.20163欧元

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我认为你使用preg_match错了 你想从字符串中提取1.20163的值,对吧? 然后这样做:

$s = '1 British Pound Sterling = 1.20163 Euro';
preg_match('/([0-9]+\.[0-9]+)/', $s, $matches);
$result = $matches[0];

你的结果是$ result。

答案 1 :(得分:0)

/^[0-9]{1,}$/

表示您想匹配仅包含数字的行。在你的情况下,你不会得到任何匹配。你也以错误的方式使用preg_match。请参阅documentation

尝试类似:

$exchange['rate'] = $xml->channel->item[15]->description;
preg_match('/=\s*([0-9.]+)\s/', $exchange['rate'], $matches);
// the result will be in $matches
$rate = $matches[1];

答案 2 :(得分:0)

尝试

'/([0-9]{1,}\.[0-9]{1,}) /'

匹配数字,然后是小数,然后是数字,然后是空格。