Php 正则表达式从字符串获取浮点值
嘿,我有一个基本上跟踪财务的系统。在这个应用程序中,它有一个“cost”字段(不幸的是它是VARCHAR字段)。此字段输入了各种值,如:Php 正则表达式从字符串获取浮点值,php,regex,Php,Regex,嘿,我有一个基本上跟踪财务的系统。在这个应用程序中,它有一个“cost”字段(不幸的是它是VARCHAR字段)。此字段输入了各种值,如: £90 £210 per day £50 per logo Design - £180 £36 p/h £1009.51 有没有办法把这些转换成浮点数?我试着使用(float)将类型变为一个float,但它不起作用 /(\d+[.]?\d*)/ 编辑 编辑的如果它总是跟在一个字符后面,您甚至可以确保其他数字不匹配: £\s*\d+(?:\.\d+)? 解
£90
£210 per day
£50 per logo
Design - £180
£36 p/h
£1009.51
有没有办法把这些转换成浮点数?我试着使用(float)将类型变为一个float,但它不起作用
/(\d+[.]?\d*)/
编辑
编辑的如果它总是跟在一个
字符后面,您甚至可以确保其他数字不匹配:
£\s*\d+(?:\.\d+)?
解释
£ # GBP
\s* # spaces, optional
\d+ # digits, required (at least one)
(?: # non-capturing group
\.\d+ # a literal dot, and more digits
)? # end group, make optional
如果它总是跟在
(
字符后面,您甚至可以确保其他数字不匹配:
£\s*\d+(?:\.\d+)?
解释
£ # GBP
\s* # spaces, optional
\d+ # digits, required (at least one)
(?: # non-capturing group
\.\d+ # a literal dot, and more digits
)? # end group, make optional
无需在字符类内转义
[.]?
和\.?
就足够了。无需在字符类中转义
<代码>[.]?和\.?
就足够了。