首页 >数据库 >mysql教程 >如何有效地从数据库记录中删除HTML标签以获得准确的搜索结果?

如何有效地从数据库记录中删除HTML标签以获得准确的搜索结果?

Patricia Arquette
Patricia Arquette原创
2024-12-06 09:12:10948浏览

How to Effectively Remove HTML Tags from Database Records for Accurate Search Results?

如何有效地从数据库记录中删除 HTML 标签

从包含 HTML 格式文本的数据库表中提取特定信息时,必须删除 HTML 标签才能准确获取结果。虽然像“WHERE column_name LIKE '%mytext%'”这样的简单 LIKE 查询可能会检索包含 'mytext' 的所有行,但它还可能包括 HTML 标记中出现 'mytext' 的行。

要解决此问题,更有效的方法是创建一个自定义 MySQL 函数,专门从给定字符串中删除 HTML 标签。以下是此类函数的代码:

SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS fnStripTags;
DELIMITER |
CREATE FUNCTION fnStripTags( Dirty varchar(4000) )
RETURNS varchar(4000)
DETERMINISTIC 
BEGIN
  DECLARE iStart, iEnd, iLength int;
    WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
      BEGIN
        SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty ));
        SET iLength = ( iEnd - iStart) + 1;
        IF iLength > 0 THEN
          BEGIN
            SET Dirty = Insert( Dirty, iStart, iLength, '');
          END;
        END IF;
      END;
    END WHILE;
    RETURN Dirty;
END;
|
DELIMITER ;

通过使用此函数,查询将变为:

SELECT * from table WHERE fnStripTags(column_name) LIKE '%mytext%'

现在,查询将仅返回 'mytext' 出现在内容本身,不包括 HTML 标记内的任何实例。这提供了更准确和相关的结果,确保只检索所需的数据。

以上是如何有效地从数据库记录中删除HTML标签以获得准确的搜索结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn