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