gpt4 book ai didi

mysql - 搜索 MySQL 时忽略保存数据中的 HTML 标签

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:13 25 4
gpt4 key购买 nike

我为此搜索了太多,找到了几个结果,但没有一个有效。我正在使用 MySQL 查询在我的帖子表中搜索标题和内容。我的问题是数据是使用包含 HTML 标签的 TinyMCE 保存的。我希望我的搜索查询忽略 HTML 标记,以免返回任何不相关的结果。
我的查询:

SELECT posts.id, posts.title, posts.date, posts.tags, posts.image, users.name, users.screen_name, users.id as user_id,
IF(
posts.title LIKE '$searchTerm%', 20,
IF(posts.title LIKE '%$searchTerm%', 10, 0)
)
+ IF(posts.post LIKE '%$searchTerm%', 5, 0)
AS weight
FROM posts
LEFT JOIN users ON posts.user_id=users.id
WHERE (
posts.title LIKE '%$searchTerm%'
OR posts.post LIKE '%$searchTerm%'
)
ORDER BY weight DESC
LIMIT 100

最佳答案

有一个php函数可以做到这一点

strip_tags($text);

您可以在此处找到更多信息 http://php.net/manual/en/function.strip-tags.php

如果你仍然想在 mysql 中这样做,你必须定义你自己的函数

delimiter ||
DROP FUNCTION IF EXISTS strip_tags||
CREATE FUNCTION strip_tags( x longtext) RETURNS longtext
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE sstart INT UNSIGNED;
DECLARE ends INT UNSIGNED;
SET sstart = LOCATE('<', x, 1);
REPEAT
SET ends = LOCATE('>', x, sstart);
SET x = CONCAT(SUBSTRING( x, 1 ,sstart -1) ,SUBSTRING(x, ends +1 )) ;
SET sstart = LOCATE('<', x, 1);
UNTIL sstart < 1 END REPEAT;
return x;
END;
||
delimiter ;

定义函数后在搜索查询中调用函数

$q="CALL strip_tags(SELECT textarea FROM table where ....)"

关于mysql - 搜索 MySQL 时忽略保存数据中的 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com