2016-07-14 4 views
3

特殊文字が見つかるたびに文字列を分割したい。すべての特殊文字にpreg_splitを使用する

私はこれでした:

preg_split("[\\W]", $str); 

をしかし、これはまだアンダースコアを許可(?そしておそらくそれ以上)になる

それは一つではないものでAZと数字とのスプリットAZできるようちょうど言うことは可能ですこれらの?あなたは、あなたの質問にだけ答えている

答えて

4

preg_split('~[^a-z0-9]~i', $str); 

this regex demo

[^a-z0-9]文字クラスは、(原因i修飾子にしてA-Z)の任意a-z以外の文字にマッチし否定し、以外を参照してください。数字(0-9で定義)。

もう一つの方法は、否定文字クラス内POSIX [:alnum:]文字クラスを使用している:

'~[^[:alnum:]]~' 

は、単一のcharの正規表現の区切り文字ではなく、ペアのものを使用する方が簡単であることregex demo

注意、私のお気に入りを参照してください。 ~です。これは正規表現のパターンではほとんど使われないので、私は自分のパターンであまりにも多くをエスケープする必要はありません。

+1

非常に詳細な回答!私は正規表現にはかなり新しいので、可能かどうかはわかりませんでした – Bart

+0

[**否定された文字クラスに住むWebリソースへのリンク**](http://www.regular-expressions.info/ charclass.html#negated) –

関連する問題