从数据库记录中删除 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中文网其他相关文章!