2012-06-21 44 views
1

我正在cakephp 1.3上工作。我在字符編碼中發現問題。我有兩個模型關鍵字,使關鍵字屬於組。我想要做的是在模型關鍵字中執行全文查詢。CakePHP HTML qoute編碼問題

function geParentKeyword($keyword) {  

//$keyword = *Acupuncturist*; Assuming this as input 
$match = html_entity_decode("MATCH(Keyword.keyword) AGAINST (\"".trim($keyword)."\" IN BOOLEAN MODE)"); 
return $this->find('first', array('fields' =>array('Group.name'), 'conditions' =>array($match)));   
} 

我得到了錯誤的結果與此查詢。我調試查詢,我得到這個

SELECT `Group`.`name` 
FROM `keywords` AS `Keyword` 
LEFT JOIN `groups` AS `Group` ON (`Keyword`.`group_id` = `Group`.`id`) 
WHERE MATCH(`Keyword`.`keyword`) AGAINST ("*Acupuncturist*" IN BOOLEAN MODE) 
LIMIT 1" 

查詢是完美的,但這裏的問題是在$比賽蛋糕轉換雙引號爲"我html_entity_decode和str_replace()函數嘗試,但他們表現出相同的查詢。

欲瞭解更多詳情。

core.php中

Configure::write('App.encoding', 'UTF-8'); 

database.php中

var $default = array(
     …. 
     'encoding' => 'UTF8', 
    ); 

預期結果

MATCH(Keyword.keyword) AGAINST (' *Acupuncturist* ' IN BOOLEAN MODE) 

請指引我是什麼的問題。提前致謝。

+0

在調用getParentKeyword之後,'$ keyword'看起來像什麼?在功能頭後直接打印出來... – shadyyx

+0

它顯示*鍼灸師*這是有效的 –

回答

-1

我自己解決了這個問題。

這是由於調試模式,我禁用調試模式。它僅適用於

Configure::write('debug', 0); 
+0

奇怪的行爲... – shadyyx

+0

Downvoted this,因爲這不會修復它。它將隱藏錯誤狀態。調試模式對字符編碼沒有影響... – RichardAtHome

+0

但這個工作適合我。 –

0

嘗試

$match = 'MATCH(Keyword.keyword) AGAINST (\''. html_entity_decode(trim($keyword)) .'\' IN BOOLEAN MODE)'; 
+0

我試着用html_entity。仍然是問題 –

1

你試試這個?

$match = "MATCH(Keyword.keyword) AGAINST ('".trim($keyword)."' IN BOOLEAN MODE)"; 
+0

我也試過這個,這是行不通的 –

+0

@MoyedAnsari我會重複我的問題:調用'getParentKeyword'後''關鍵字'看起來像什麼?在功能頭後直接打印出來... – shadyyx