Maison > base de données > tutoriel mysql > Comment rechercher avec précision les colonnes MySQL contenant des balises HTML ?

Comment rechercher avec précision les colonnes MySQL contenant des balises HTML ?

DDD
Libérer: 2024-12-14 10:05:10
original
172 Les gens l'ont consulté

How to Accurately Search MySQL Columns Containing HTML Tags?

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>');
Copier après la connexion

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%';
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal