1
印刷可能でない文字と通貨記号を一致させたい次のものは印刷できません、通貨記号の予想を追加するにはどうすればよいですか?正規表現非印字文字プラス通貨記号
$str = preg_replace('/[[:^print:]]/', '', $str);
印刷可能でない文字と通貨記号を一致させたい次のものは印刷できません、通貨記号の予想を追加するにはどうすればよいですか?正規表現非印字文字プラス通貨記号
$str = preg_replace('/[[:^print:]]/', '', $str);
\p{Sc}
パターンは、通貨記号と一致して、あなただけの否定文字クラス(またはPOSIXの用語でブラケット表現)にそれを配置する必要があります。
使用
$re = '/(*UTF)[^[:print:]\p{Sc}]+/';
echo preg_replace($re, '', '£aA€');
はregex demoとPHP demoを参照してください。
詳細:
(*UTF)
- PCREエンジンがUnicode文字列として文字列を扱うになりPCREの動詞ではなく、バイト列(それは(*UTF)
と(*UCP)
の両方を可能にするので、我々は/u
修飾子を使用することはできません注意してください後者はすべてのサブパターンをUnicodeに認識させ、その後はさらに多くの文字とマッチングを開始します)[^[:print:]\p{Sc}]+
-以外の1つ以上の記号(+
限定記号のため)に一致します。
[:print:]
- 印刷可能な文字\p{Sc}
- 通貨記号
私は私はそれがそれらを取り除くと思う通貨記号を維持したいですか? – user3131345
あなたの質問で言わなかったこと – Fallenhero
@ user3131345:あなたに必要なのは 'preg_replace( '/ [^ [:print:]] + /'、 ''、$ str)'ですか? –