我正在使用以下模式,该模式基本上从不是以货币符号开头的数字的字符串中删除任何内容:
$pattern = '/\p{Sc}\s*\d{1,3}(?:,\d{3})*(?:\.\d+)?/u';
但是,由于我匹配的字符串可能是html源代码,因此这并不完美,因为英国的网站并不总是使用“£”作为值,他们可能会使用£
或{{1 }}
£
所以我要问的是,使用A price might be listed as £10.00 or £10.00 or £10.00
答案 0 :(得分:0)
是的,请使用包含所有这些内容的字符类。
[\p{Sc}\p{...}\p{...}]
编辑:
在使用正则表达式之前,您可以使用html_entity_decode
将字符串中的实体转换为相关字符。
$string = html_entity_decode("A price might be listed as £10.00 or £10.00 or £10.00");
$pattern = '/\p{Sc}\s*\d{1,3}(?:,\d{3})*(?:\.\d+)?/u';
$matches = [];
preg_match_all($pattern, $string, $matches);