首页 >数据库 >mysql教程 >如何在忽略 HTML 标签的情况下在数据库列中搜索文本?

如何在忽略 HTML 标签的情况下在数据库列中搜索文本?

Linda Hamilton
Linda Hamilton原创
2024-12-06 14:31:12903浏览

How Can I Search a Database Column for Text While Ignoring HTML Tags?

从数据库记录中删除 HTML 标签

您正在尝试从数据库表中提取行,其中特定列包含关键字“mytext” “但遇到了不正确的结果。该表包含具有不同程度的包含字符串的 HTML 标记的行。为了准确识别包含所需文本的行,排除 HTML 标签中包含的文本至关重要。

一种可能的解决方案是利用名为 fnStripTags 的自定义 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 ;

用法:

定义函数后,您可以在查询中使用它来从查询中排除 HTML 标签搜索:

SELECT * FROM table WHERE fnStripTags(colmn_name) LIKE '%mytext%';

此修改后的查询将仅返回剥离文本包含字符串“mytext”的行,为您提供正确的结果:

Row 3: <p>This is the Third row  my mytext is there  </p>

以上是如何在忽略 HTML 标签的情况下在数据库列中搜索文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

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