2016-11-30 13 views

答えて

1

\p{Sc}パターンは、通貨記号と一致して、あなただけの否定文字クラス(またはPOSIXの用語でブラケット表現)にそれを配置する必要があります。

使用

$re = '/(*UTF)[^[:print:]\p{Sc}]+/'; 
echo preg_replace($re, '', '£aA€'); 

regex demoPHP demoを参照してください。

詳細

  • (*UTF) - PCREエンジンがUnicode文字列として文字列を扱うになりPCREの動詞ではなく、バイト列(それは(*UTF)(*UCP)の両方を可能にするので、我々は/u修飾子を使用することはできません注意してください後者はすべてのサブパターンをUnicodeに認識させ、その後はさらに多くの文字とマッチングを開始します)
  • [^[:print:]\p{Sc}]+ -以外の1つ以上の記号(+限定記号のため)に一致します。
    • [:print:] - 印刷可能な文字
    • \p{Sc} - 通貨記号
+0

私は私はそれがそれらを取り除くと思う通貨記号を維持したいですか? – user3131345

+0

あなたの質問で言わなかったこと – Fallenhero

+0

@ user3131345:あなたに必要なのは 'preg_replace( '/ [^ [:print:]] + /'、 ''、$ str)'ですか? –