Supprimer les balises HTML d'un enregistrement
Vous avez peut-être rencontré une situation dans laquelle vous devez rechercher un mot-clé spécifique dans une colonne contenant Balises HTML. Cependant, vous remarquerez peut-être que votre requête renvoie des résultats incorrects en raison de la présence de ces balises. Explorons comment modifier votre requête MySQL pour filtrer avec précision les enregistrements en fonction de leur contenu tout en excluant les balises HTML.
Dans l'exemple fourni, la requête SELECT * from table WHERE colmn_name LIKE '%mytext%' récupérera les quatre lignes, même si seule la ligne 3 contient le mot-clé "mytext" dans son contenu. Pour surmonter ce défi, envisagez la solution suivante proposée par un membre du forum MySQL :
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>');
Cette solution implique la création d'une fonction définie par l'utilisateur (UDF) nommée fnStripTags qui accepte une chaîne sale contenant des balises HTML. La fonction parcourt la chaîne, localisant les balises d'ouverture (<) et de fermeture (>). Il calcule la longueur de la balise et la supprime de la chaîne pour produire une chaîne propre sans éléments HTML.
Pour utiliser cet UDF, vous pouvez l'incorporer dans votre requête d'origine comme suit :
SELECT * FROM table WHERE fnStripTags(column_name) LIKE '%mytext%';
En utilisant cet UDF, votre requête exclura les balises HTML de la recherche, garantissant ainsi que vous récupérez uniquement les lignes où le mot-clé « montexte » apparaît dans le contenu réel. Cette approche vous permet d'effectuer un filtrage des données plus précis et d'éviter toute interférence du balisage HTML.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!