2010年07月06日

preg_splitで、文字列を分割すると値が空の要素ができてしまうのです。

preg_splitで、文字列を分割すると値が空の要素ができてしまうのです。

C:\>php -r "var_dump(preg_split('//', 'string'));"
array(8) {
[0]=>
string(0) ""
[1]=>
string(1) "s"
[2]=>
string(1) "t"
[3]=>
string(1) "r"
[4]=>
string(1) "i"
[5]=>
string(1) "n"
[6]=>
string(1) "g"
[7]=>
string(0) ""
}

PREG_SPLIT_NO_EMPTYを指定すれば、空の要素は取り除いてくれます。

C:\>php -r "var_dump(preg_split('//', 'string', null, PREG_SPLIT_NO_EMPTY));"
array(6) {
[0]=>
string(1) "s"
[1]=>
string(1) "t"
[2]=>
string(1) "r"
[3]=>
string(1) "i"
[4]=>
string(1) "n"
[5]=>
string(1) "g"
}

3つ目の引数は、最大の分割数ですがnullを指定しておけば最大数の指定なしになります。0でも-1でも良いようですが、マニュアルには

制限を指定せずに flags パラメータを指定したい場合などに null を使用します。

とあります。

対象の文字列が空という場合の方が多いかもしれませんね。

C:\>php -r "var_dump(preg_split('/ /', ''));"
array(1) {
[0]=>
string(0) ""
}



C:\>php -r "var_dump(preg_split('/ /', '', null, PREG_SPLIT_NO_EMPTY));"
array(0) {
}

となる。
知らなかったので。
posted by ほえ at 16:27| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。