0

我正在使用以下模式,它基本上从字符串中删除任何不是货币符号前面的数字的内容:

$pattern = '/\p{Sc}\s*\d{1,3}(?:,\d{3})*(?:\.\d+)?/u';

但是,由于我匹配的字符串可以是 html 源代码,这并不完美,因为英国的网站并不总是使用“£”作为值,他们可能使用££

A price might be listed as £10.00 or £10.00 or £10.00

所以我要问的是,是否可以在使用时将它们添加到组合中p{Sc} /u

4

1 回答 1

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);
于 2012-11-20T07:57:09.607 回答