PHP - 在字符串中降价前后的所有内容

时间:2015-03-30 13:32:24

标签: php regex

我得到了这样的字符串:

Test 120,00 Euro yaddayadda
200 € with 18 months of blablabla
3.000,65 € something . And here s something more with 0815. And more.
1 Euro
Last item for 5.234.789,00 Euro.

我希望摆脱除价格之外的一切。 所以这些例子应该是

120,00
200
3.000,65
1
5.234.789,00

我已经

preg_replace("/[^0-9,.]/", "", $string);

但这还不够。它变成

3.000,65 € something . And here s something more with 0815. And more.

3.000,65.0815..

关闭......但仍然不够。

THX!

1 个答案:

答案 0 :(得分:2)

您可以使用:

$result = preg_replace('/^\D*(\b\d+([,.]\d+)*\b).*$/m', '$1', $str);

RegEx Demo

这个正则表达式:

\D*           # matches all non-digits from start
\b            # word boundary
\d+([,.]\d+)* # matches your floating point number in each line
(...)         # groups these numbers
.*$           # match rest of the line

替换为$1,这是被捕获的数字。