もう一つPHPでつまづいたのでメモ。
1つ前のエントリーで書いた「2次元配列のソート」と同時につまったのが、「CSVデータの中身をあいまい検索」。
SQLならそもそもLikeコマンドがあるからいいんですけど、CSVデータだとただの配列なのでどーしたものかと。
これもすごく悩みました。
さっさと結論を書くと、配列を要素数分forかなんかで回して、similar_textでマッチする文字数を検索でした。
similar_textは比較対象と検索文字の類似性を求める関数です。
って、わかりづらいですね。コード書きます。
//$itemsは元の配列
//$cは合致した文字数
//$wordは検索文字
for($i=0;$j<count($items);$i++){
$c=similar_text($word,$items[$i]);
if($c==strlen($word)){
//合致した場合の処理
}
}
ここでのポイントは元の検索文字のバイト数とsimilar_textを用いて得られた結果の文字数で整合性を取っている部分です。
ここを同じにしておかないと、検索元の文字の一部が含まれているだけで合致したことになってしまうので・・・。
けど、そこは「もしかしたら~」の検索に使えるかもですね。