2012-06-21 124 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