我的代码中有以下sql查询:
SELECT ANSWER FROM FAQ WHERE (ANSWER LIKE '%".$searchKey."%')其中,答案可能包含html &样式标记,这使得上面的查询在纯文本匹配的情况下不会检索任何内容。我使用的是Symfony 1.1,上面的查询位于faq.php文件中。
所以,有人能建议我如何克服这个问题吗?
发布于 2013-04-18 11:28:30
嗯,我知道这很古老,但是,我认为您可以通过在mysql上创建这个函数来解决问题。
DELIMITER |
DROP FUNCTION IF EXISTS plain_text |
CREATE FUNCTION plain_text( Dirty text )
RETURNS text
DETERMINISTIC
BEGIN
DECLARE iStart, iEnd, iLength int;
WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
BEGIN
SET iStart = Locate( '<style>', Dirty ), iEnd = Locate( '</style>', Dirty);
IF iEnd > 0 THEN
BEGIN
SET iLength = ( iEnd - iStart) + 12;
END;
ELSE
BEGIN
SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty ));
SET iLength = ( iEnd - iStart) + 1;
END;
END IF;
IF iLength > 0 THEN
BEGIN
SET Dirty = Insert( Dirty, iStart, iLength, '');
END;
END IF;
END;
END WHILE;
RETURN Dirty;
END;
|
DELIMITER ;此函数移除所有html标记和<style></style>标记之间的所有内容。
然后,您可以这样执行查询:
SELECT plain_text(ANSWER) as plain_t FROM FAQ HAVING (plain_t LIKE '%".$searchKey."%')https://stackoverflow.com/questions/11629188
复制相似问题