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 に答える