看板 PHP 關於我們 聯絡資訊
分享一下我最後的作法 function keyword_Str($keyStr) { preg_match_all('/["](.*?)["]/',$keyStr, $rlt, PREG_SET_ORDER); foreach ($rlt as $array) { $keyStr = ereg_replace($array[0],' ', $keyStr); $result[] = $array[1];//把雙引號萃取出的字放入新的陣列$resoult } $rlt = explode(' ', $keyStr); foreach ($rlt as $value) $result[] = $value; return $result;//回傳陣列 已被拆解開的關鍵字串 有部份是空值 要判斷後再使用 } 不過我現在卻發現新的問題 我再MYSQL中使用如下的fulltext搜尋 SELECT DISTINCT Id FROM index WHERE MATCH (`html`) AGAINST ( 'john poter' IN BOOLEAN MODE) 我要找的字是 john poter(要連在一起) 但是上面的語法MySQL會把有john 或poter的都找出來 所以使用者用雙引號反而意義是把引號內的字串做OR 不知這是否是SQL MATCH的限制? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.7.229
buganini:ereg_replace可以換成str_replace 12/23 11:58
buganini:http://0rz.tw/c22ey 12/23 12:00
buganini:所以取$array[0]就好了,雙引號繼續用 12/23 12:01
buganini:然後implode(' ',$result);去用 12/23 12:02
buganini:最好用一下mysql_escape_string() 12/23 12:03