徐善通的随笔

千里之行, 始于足下



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 fnStripTags('this <html>is <b>a test</b>, nothing more</html>');

二、代码如下

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<.');



作者: 徐善通
地址: https://www.xstnet.com/article-64.html
声明: 除非本文有注明出处,否则转载请注明本文地址


我有话说



最新回复


正在加载中....

Copyrights © 2016-2019 醉丶春风 , All rights reserved. 皖ICP备15015582号-1