配列データをキーワード検索
こんばんは。お世話になっております。タイトルにあるように配列内にあるデータを、キーワード検索をしたいと考えておりますが、テキストフォームに入力したキーワードが反映できずにいるため、アドバイスを頂戴したく投函させていただきました。
$string=array(
"1組 男 高木義男 明るい性格 ok",
"2組 女 高島幸子 根暗な性格 ok",
"3組 男 飯田彰浩 前向きな性格 no",
"2組 男 木下敏明 努力家 ok",
"3組 女 結城聡子 心配性な性格 no",
"1組 女 佐藤恵子 明るい性格 ok",
);
以上のような配列があり(各データのスペースはタブ区切りです)、テキストフォームで入力したキーワードを
最後のokとなっているのを条件に、名前の欄と性格の欄から、OR検索(*)をしたいのですが、上手く検索させることが出来ません。
*テキストフォームにてスペースでキーワードを入力したとき、OR検索としたい。
お忙しい中恐縮ですが、ご指導いただけたら幸いです。宜しくお願い致します。
以下が実際に記述している現在のソースです。
(テキストフォームにて入力されたキーワードをGETで送信しています)
$key = urldecode($_GET["key"]);
$key = mb_convert_encoding($key, 'EUC-JP', 'auto');
$key = mb_ereg_replace(" ", " ", $key);
$arr = explode(" ",$key);
foreach($arr as $keyy){
$wherearr[] = "(strstr($site_data_array[2], $keyy) OR strstr($site_data_array[3], $keyy))" ;
}
$wherestr = "(".implode(" OR ",$wherearr).")";
if($key != ""){
for($i=0; $i<$count; $i++){
$site_data = $string[$i];
$site_data_array = explode(" ", $site_data);
if($wherestr AND trim($site_data_array[4]) == "ok"){
$search_array[] = implode("\t", $site_data_array);//この配列データを表示
}
}
}
お礼
完璧です♪ 配列にする前にこのように正規表現できる便利な関数があるのですね☆大変満足のいく動作となりました! borazuさん、ありがとうございました!!