作者jimshsu (jims)
看板PHP
標題Re: [請益] 請問分割雙引號的字原問題
時間Fri Dec 22 15:23:20 2006
分享一下我最後的作法
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:所以取$array[0]就好了,雙引號繼續用 12/23 12:01
→ buganini:然後implode(' ',$result);去用 12/23 12:02
→ buganini:最好用一下mysql_escape_string() 12/23 12:03