Mysql过滤Html标签自定义函数
2019-11-29 本文已影响0人
我是程序汪
1.方法一
DROP FUNCTION IF EXISTS fnStripTags;
DELIMITER |
CREATE FUNCTION fnStripTags( Dirty text CHARSET utf8)
RETURNS text CHARSET utf8
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 ;
2.方法二:
DROP FUNCTION IF EXISTS del_script_tags;
CREATE FUNCTION `del_script_tags`($str mediumtext) RETURNS mediumtext
BEGIN
DECLARE $start, $end INT DEFAULT 1;
LOOP_SCRIPT: LOOP
SET $start = LOCATE("<script", $str, $start);
IF (!$start) THEN LEAVE LOOP_SCRIPT; END IF;
SET $end = LOCATE("</script>", $str, $start);
IF (!$end) THEN SET $end = $start; END IF;
SET $str = INSERT($str, $start, $end - $start + 9, '');
END LOOP;
SET $start = 1;
SET $end = 1;
LOOP_STYLE: LOOP
SET $start = LOCATE("<style", $str, $start);
IF (!$start) THEN LEAVE LOOP_STYLE; END IF;
SET $end = LOCATE("</style>", $str, $start);
IF (!$end) THEN SET $end = $start; END IF;
SET $str = INSERT($str, $start, $end - $start + 8, '');
END LOOP;
SET $start = 1;
SET $end = 1;
LOOP
SET $start = LOCATE("<", $str, $start);
IF (!$start) THEN RETURN TRIM(REPLACE(REPLACE($str, CHAR(10), ''),' ','')); 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;