php在“euro”之后和之前的字符串中查找数字

时间:2012-02-10 22:22:04

标签: php string numbers int

我有一个像"9 mesi in cotone EURO 3+ss""9 mesi in cotone 3 EURO +ss"这样的字符串,我希望在单词EURO之前或之后得到整数值,取决于字符串格式(我不知道如何用户将发送它) 有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:0)

这样的事情:

if(preg_match('/(\\d+(?:\.\\d+)?)?\\s*euro\\s*(\\d+(?:\.\\d+)?)?/i', $string, $regs) and count($regs) > 1) {
    if(!$regs[1] and !$regs[2]) {
        // Invalid input
    } else {
        $amount = floatval($regs[1] ? $regs[1] : $regs[2]);
        // Do something with $amount
    }
}

可能需要根据区域设置(空间千位分隔符,逗号等)调整正则表达式。

如果使用整数值,则正则表达式简化为:

preg_match('/(\\d+)?\\s*euro\\s*(\\d+)?/i', $string, $regs)

答案 1 :(得分:0)

将它分解为两个正则表达式可能更简单:

/(d+)\s*EURO/
/EURO\s*(d+)/

这应该让你走上正轨。

答案 2 :(得分:0)

preg_match_all('/[0-9]+/',$string,$matches);
$values = array_shift($matches);
$lastnum = array_pop($values);
echo $lastnum;