日期:2014-05-17  浏览次数:20701 次

mysql函数学习--过滤html标签
我是这么写的mysql函数,用来过滤数据库某张表里的某个字段里包含的html标签。
当查询这个字段时,我直接调用这个函数就可以了。

DELIMITER $$

DROP FUNCTION IF EXISTS `abgent_website`.`removeHtml`$$

CREATE FUNCTION `removeHtml`(s varchar(255)) RETURNS varchar(255)
BEGIN
    declare d int(20);
    declare dd int(20);
    declare sumstr varchar(255);
    while (instr(s,'<')!=0 && instr(s,'>')!=0) do
      
      set d = instr(s,'<');
      set dd = instr(s,'>');
      set sumstr = substr(s,1,d-1);
      set s = substr(s,dd+1);
      set s = concat(sumstr,s);
    end while;
    return s;
    END$$

DELIMITER ;


我是这么写的,虽然是把所有带<>这个符号都过滤掉了,但是我感觉里面不太好,一旦我想在里面写入带<>内容,它都给我过滤掉了,其实我只想过滤属于html标签的一些内容,而不是所有带<>尖括号的内容,请问还有别的更好的方法吗?