我正在尝试在字符串上使用简单的正则表达式来获取定价信息,但是我的preg_match_all
根本就是没有找到它应该找到的东西。
我正在寻找例如$**.**
or £**.**
或者有时货币符号可能被编码为 HTML 实体,例如对于英镑£
or £
使用有问题吗preg_match_all
寻找html实体?
这就是我正在尝试的:
$price = preg_match_all(
'#(?:\$|\£|\€|\£|\£)(\d+(?:\.\d+)?)#',
$string,
$matches
);
但我得到:未知修饰符“1”
下面是一些明显的错误:
1) preg_match_all()
预计至少有 3 个参数,因此必须是
preg_match_all(
'#(?:\$|\£|\€|\£|\£)(\d+(?:\.\d+)?)#',
$string,
$matches
);
The $matches
变量将包含匹配的字符串。你的$price
将包含模式匹配的次数。请参见http://php.net/preg_match_all了解更多信息。
2)您有一个未转义的分隔符:
'#(?:\$|\£|\€|\£|\£)(\d+(?:\.\d+)?)#'
^ ^ ^
Start Unescaped End
解决这两个问题将使代码运行没有任何解析错误。它还应该回答有关匹配实体的字面问题。
但是,我有点怀疑正则表达式能否实现您想要做的事情。价格并不总是列出[CurrencySymbol][Amount]
。例如,欧元通常写为 100€ 或 100 €。因此,您必须检查符号之前的数字以及之后的空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)