explode()やsplit()で文字列を配列に分割したとき、空白の要素が混ざってしまうことがあります。
たとえば、「aaa, bbb, ccc」というような文字列をスペースかカンマで分割して配列にする場合、表記のゆれを防止するために、次のようなコードが想定されます。
<?php
$tags = "aaa, bbb, ccc ddd,eee";
$tags = split(' |,', $tags); // スペースでもカンマでも分割する。
?>
取り出したかった配列の要素は5つだけのはずでしたが、空白の要素がノイズとして紛れ込んでしまいます。
array(7) {
[0]=>
string(3) "aaa"
[1]=>
string(0) ""
[2]=>
string(3) "bbb"
[3]=>
string(0) ""
[4]=>
string(3) "ccc"
[5]=>
string(3) "ddd"
[6]=>
string(3) "eee"
}
空白を取り除く処理は特に難しくありません。一番単純な発想でいけば、foreachで一通りチェックして、空白ならunset()するという手段を思いつくでしょう。
foreach ( $tags as $k => $v ) if ( empty($v) ) unset($tags[$k]);
これでも十分に、空白を取り除くことができますが、もっとシンプルに書く方法があります。array_filter()を使うやりかたです。この方法だと、一行にすっきり納めることができます。
$tags = array_filter($tags, 'strlen');
さっきのノイズ混じりの配列もこれで、必要な要素だけに絞り込むことができます。
array(5) {
[0]=>
string(3) "aaa"
[2]=>
string(3) "bbb"
[4]=>
string(3) "ccc"
[5]=>
string(3) "ddd"
[6]=>
string(3) "eee"
}
トラバURL : http://suin.asia/trackback/133
氷川 XOOPS Module 開発室