マルチバイトの空白を判別するには? / magicien 

PHPで検索機能を作る時に、検索ワードを空白で分割しようと思うと、マルチバイトな上に、半角と全角のスペースの2種類があるので、なかなか難しい。と思ったら、簡単な方法があったので、メモ。

mb_splitという、マルチバイト対応の文字列分割用の関数があった。この関数で、半角、全角のスペース、タブ、改行をまとめて指定するには、[[:space:]]を使う。
$search_words = array_unique(mb_split("[[:space:]]+", $_GET['search']));
if(empty($search_words[0])){
	array_shift($search_words);
}

array_uniqueは重複する単語を除去する関数。$_GET['search']の先頭にスペースが入っている場合は、配列の最初は空になるので、array_shiftで取り除いておく。といった感じの処理をしてます。
2007/03/10(Sat) 14:32:32