24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > PHP开发

MySql过滤HTML标签的函数定义

2017-10-21 09:43:52 东方博宜 阅读

mysql本身没有去除html代码的内置函数,但是在一些情况下,不得不在数据库层次提取一些去除了html代码的纯文本。

经过查询后,找到了以下两个函数,经测试,均可用。

函数1:

 代码如下复制代码
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 fnStripTags('this <html>is <b>a test</b>, nothing more</html>');  

 

函数2:

 代码如下复制代码

CREATE FUNCTION `strip_tags`($str text) RETURNS text   
BEGIN  
    DECLARE $start, $end INT DEFAULT 1;   
    LOOP   
        SET $start = LOCATE("<", $str, $start);   
        IF (!$start) THEN RETURN $str; END IF;   
        SET $end = LOCATE(">", $str, $start);   
        IF (!$end) THEN SET $end = $start; END IF;   
        SET $str = INSERT($str, $start, $end - $start + 1, "");   
    END LOOP;   
END;   
  
select strip_tags('<span>hel<b>lo <a href="world">wo<>rld</a> <<x>again<.');


Powered by 东方博宜教育咨询江苏有限公司  ©2008-2017 www.czos.cn