首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql内置函数以剥离标记

mysql内置函数以剥离标记
EN

Stack Overflow用户
提问于 2012-07-24 10:45:08
回答 4查看 181关注 0票数 1

我的代码中有以下sql查询:

代码语言:javascript
运行
复制
SELECT ANSWER FROM FAQ WHERE (ANSWER LIKE '%".$searchKey."%')

其中,答案可能包含html &样式标记,这使得上面的查询在纯文本匹配的情况下不会检索任何内容。我使用的是Symfony 1.1,上面的查询位于faq.php文件中。

所以,有人能建议我如何克服这个问题吗?

EN

回答 4

Stack Overflow用户

发布于 2012-07-24 10:51:50

我本来是说:

代码语言:javascript
运行
复制
"SELECT `answer` FROM `faq` WHERE (`answer` LIKE '%".strip_tags($searchKey)."%'")

但是现在,这是由于评论而添加的内容。

那为什么不这样做呢?

代码语言:javascript
运行
复制
$query = mysql_query("SELECT `answer` FROM `faq` WHERE (`answer` LIKE '%$searchKey%'");
while ($result = mysql_fetch_object($query)) {
    $newStrippedItem = strip_tags($result->columnItemName);
}
票数 0
EN

Stack Overflow用户

发布于 2012-07-24 13:22:47

您需要做的是使用PHP函数htmlentities(answer)。它将以纯文本形式显示HTML标记。

希望能帮上忙

布拉姆

票数 0
EN

Stack Overflow用户

发布于 2012-07-24 13:32:12

货架上没有这样的功能。虽然可以编写,但编写一个“简化”的答案版本并对其运行全文匹配会更有表现力。毕竟,搜索将在由mysql_strip_tag函数生成或存储在ANSWER_SIMPLE列中的条带_tag‘’ed版本的答案上进行,逻辑是相同的。

在搜索时,您可以使用带条标签、删除噪声词和小写SearchQuery,然后在ANSWER_SIMPLE中查找您的SimplifiedSearchQuery。您还可以使用其他技巧,例如在存储和搜索之前将所有单词转换为Soundex格式(可选吗?)“相似之处”。

另一种可能是将SearchQuery块成单个单词并分别搜索它们。因此,如果由于有“但{em}I{/em}是您的{em}Queen{/em}!”(其中找不到SearchQuery“您的皇后”),则可以搜索的匹配项,即“/em”和"Queen“。这将导致误报,但允许您使用当前的数据库而不求助于剥离的辅助列或表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11629188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档