如果我有这些字符串:
$string1 = "This book costs €25.99 in our shop."
Run Code Online (Sandbox Code Playgroud)
而在另一边
$string2 = "This book costs 25,99€ in our shop."
Run Code Online (Sandbox Code Playgroud)
如何使用preg_match获得"€25.99"或"25,99€" ?代码将如何?
请注意,有两种写欧元符号的方法.欧盟的正确方法是在数字后写下符号,如25,99€,并使用逗号作为desimal分隔符.然而,很多美国人坚持美元方式(25.99欧元)和点作为desimal分离器.
如何检查这两种情况并以最干净,最有效的方式获得带符号的值?
这是原始的正则表达式: \xe2\x82\xac\\d+(?:[,.]\\d+)?|\\d+(?:[,.]\\d+)?\xe2\x82\xac
preg_match ( "/\xe2\x82\xac\\d+(?:[,.]\\d+)?|\\d+(?:[,.]\\d+)?\xe2\x82\xac/" , $string1, $matches)\n
Run Code Online (Sandbox Code Playgroud)\n\n如果您想考虑欧元和值之间的可选空格,请使用:
\n\npreg_match ( "/\xe2\x82\xac ?\\d+(?:[,.]\\d+)?|\\d+(?:[,.]\\d+)? ?\xe2\x82\xac/" , $string1, $matches)\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
823 次 |
最近记录: |