Saltar al contenido principal

Eliminar etiquetas HTML usando MySQL

Jose CerrejonMenos de 1 minutoDeveloperDeveloper

Eliminar etiquetas HTML usando MySQL

mysql
mysql

El otro día me pasé medio día intentando limpiar de una base de datos MySQL para un proyecto, aquellos campos con código html que había insertado previamente con summernoteopen in new window. Ahora queríamos el texto limpio sin código así que tras fracasar en la creación de un script para hacerlo y ver que las soluciones en internet no daban resultado alguno, encontré el siguiente código para hacerlo directamente desde MySQL...


Se trata de crear una función que posteriormente llamaremos cuando ejecutemos un SELECT. El siguiente código lo puedes ejecutar como cualquier otra consulta:

SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS fnRemoveHtml;
DELIMITER |
CREATE FUNCTION fnRemoveHtml( 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 ;

### Función para guardar como oro en paño

No importa que las etiquetas tengan parámetros definidos o que estén anidadas. El resultado será un texto limpio de código.

Gracias a Peter Brawley por postear la solución allá por el 2007 y a todos los que participaron en ese hilo.

Enlace: forums.mysql.comopen in new window