我试图使用PHP preg_math解析字符串,看起来像:使用PHP的preg_match
6.15608128 Norwegian kroner
我只是想在第一部分(数字),而不是文字。我写了一个简单的正则表达式像
[0-9\.]+
是工作在正则表达式测试正常,但PHP抱怨的“+”。任何人都可以帮我写这个正则表达式,所以它对preg_match函数有效吗?我尝试了很多不同的想法,但我对真正的正则表达式不太了解。
感谢您的任何提示。
我试图使用PHP preg_math解析字符串,看起来像:使用PHP的preg_match
6.15608128 Norwegian kroner
我只是想在第一部分(数字),而不是文字。我写了一个简单的正则表达式像
[0-9\.]+
是工作在正则表达式测试正常,但PHP抱怨的“+”。任何人都可以帮我写这个正则表达式,所以它对preg_match函数有效吗?我尝试了很多不同的想法,但我对真正的正则表达式不太了解。
感谢您的任何提示。
The regex works fine。您是否缺少delimiters?该函数应该这样来使用:
preg_match('/[0-9\.]+/', $string, $result);
(。顺便说一句,你不需要逃避字符类中的.
[0-9.]
就够了)
非常感谢Kenny,你是对的,我错过了分隔符。 – julio 2010-09-02 18:08:43
正如您可能已经猜到的,我正在搞乱Google货币转换API。问题是,他们是非常不规范的用自己的数据,这是不正确的JSON等 一些汇率的有空格,而不是逗号或其他separators--如: 1 811.5942哥伦比亚比索 是否有改变这个正则表达式来包含这个空间的方法?再次,在一个正常的正则表达式中,您只需在点([0-9 \。])之后添加一个空格,但这在PHP中不起作用。 再次感谢。 – julio 2010-09-02 18:19:24
@ julio:'[0-9。 ]'必须工作(但也包括哥伦比亚之前的空间)。如果没有,请尝试'[0-9。\ s]'。如果问题是由于额外的空间造成的,请尝试使用[\ d \ s] + \。\ d +'。 – kennytm 2010-09-02 18:24:18
不具有实际的代码,这里是一些代码确实有效:
$string = "6.15608128 Norwegian kroner";
preg_match('#[0-9\.]+#', $string, $matches);
print_r($matches);
/* Outputs:
Array
(
[0] => 6.15608128
)
*/
#号是分隔符。有关php正则表达式的更多信息,请参阅this article。
你是否用斜线包围了你的模式?
preg_match('/[0-9\.]+/', $string, $matches);
它不*有*是斜线,只是必须是一个有效的分隔符,作为一个fyi :) – 2010-09-02 17:56:26
Neato - 不知道。 – sholsapp 2010-09-02 17:57:30
试试这个:
$s = '6.15608128 Norwegian kroner';
preg_match('/[0-9]*\.[0-9]*/', $s, $matches);
var_dump($matches);
的完整代码,请。 – kennytm 2010-09-02 17:50:16
“PHP抱怨+”是什么意思?它说什么? – BoltClock 2010-09-02 17:50:40
当你在一个字符类中时,你不需要转义它。 – Aillyn 2010-09-02 17:56:54