2016-03-24 7 views
1

文字列からアルファベット以外の記号をすべて削除することを考えています。php preg_replaceは[abc]構文で^を無視します。

$string = "abcd 5858add"; 
print preg_replace('/[ˆa-z]/', '', $string)."\n"; //produces ' 5858' (wrong) 
print preg_replace('/[a-z]/', '', $string)."\n"; //produces ' 5858' (right) 

最初の正規表現は、アルファベット以外の記号をすべて削除する必要があります。 2番目の記号はすべての英字記号を削除する必要があります。 しかし結果は両方とも同じです。 なぜですか? PHP 5.5.30、キャレットはありませんPHP 5.4.16

+0

私の答えを投稿した後、私はちょうど問題を非常に明確に示すあなたのタイトルに気付きました:) –

答えて

3

でテスト

は、それは曲折アクセントです。

[ˆa-z]の代わりに[^a-z]を使用してください。

+0

何が鷹の目ですか! – Toto

+0

素晴らしい!ありがとうございました。 P.P. MACレイアウトのトリックです:Shift + 6はサーカンフレックスを与え、Shift + 6とSpaceはキャレットを与えます。 –

関連する問題