【发布时间】:2014-01-03 20:36:45
【问题描述】:
在 Regex 测试页面上进行测试时,下面的这个 Regex 适用于所有货币。
虽然在我的页面中,它只适用于美元货币。
我为不同的字符集更改了 MetaTag,没有运气。
可能出了什么问题?
if (preg_match_all('([£€$¥]([ 0-9]([ 0-9,])*)(\.\d{2})?|([0-9]([0-9,]))(\.\d{2})?([pcm]|bn| [mb]illion))', $tout, $matches))
我想提取 4 个货币符号中的任何一个(不带空格)之后的任何金额。
【问题讨论】:
-
您能否展示一些您正在处理的
$tout的示例值? -
没有更多信息,我认为这是一个编码问题。您的表达式可能不匹配,因为您尝试匹配的文本中的其他货币符号使用的字符代码与脚本中的不同。如果输入是 UTF-8,请尝试将
u修饰符添加到您的模式并确保您的脚本也是 UTF-8。 -
这不会被提取:¥ 18.00 菠萝鸡
-
这将被提取:$ 18.00 菠萝鸡
-
@SergeSf:你的页面使用什么编码并不重要,除非那是输入的来源。重要的是脚本本身和输入的编码。 (顺便说一句,如果您有选择,您可能更喜欢 UTF-8,原因有很多。)