Requete SQL sur champs qui stocke du HTML

Signaler
Messages postés
1
Date d'inscription
vendredi 4 novembre 2005
Statut
Membre
Dernière intervention
30 novembre 2005
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Salut les zamis, j'ai un prob!

J'utilise un éditeur wysiwyg (fckeditor), celui ci m'enregistre tout le code HTML de la mise en page que je fais avec, et code les accents en entités HTML avec des é è etc...

Exemple :


Code:,
----

Cité dès le début du 12e  siècle que Landersheim est cité dans le "Besitzverzeichnis der Abtei Mauersmuenster", sous la dénomination "LANTHERESHEIM" (=Wohnsitz des LANTHER), puis au 14e siècle sous le nom de "LANTERSEN", LANDERSCHE dans le langage populaire.>


J'en suis à créer le moteur de recherche pour ce site.

Donc pour palier à l'enregistrement du champs en entités HTML, je transforme les mots que l'internaute entre dans mon champs de recherche en mots codés en entités HTML avec les é etc, histoire de pouvoir comparer les 2 avec un like.

Or lors de la comparaison, cette dernière s'effectue sur l'intégralité du contenus du champs, çàd que si j'avais cherché "UserFiles" çà m'aurait sorti ce texte car UserFiles est contenus dans le path de l'image, alors qu'on veut bien sur se passer de tout contenu contenu dans ces balises HTML : 1er point.

2nd point : avec ce codage en entité HTML çà rend le moteur de recherche sensible aux accents, si je cherche "evenement", çà ne me sortira pas "évènement" par exemple.

Donc comment résoudre ces 2 points? J'ai vu les regexp dans les requetes mysql, mais il faudrait déjà que je nettoie mon champs HTML avant et que je lance ma recherche en regexp après aussi?

Je suis bloqué je sais pas comment faire... HELP!

1 réponse

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

tu devrais tout pouvoir faire en une passe avec les expressions régulières sql, c'est à dire aussi éviter les balises. Il existe tout un tas d'expressions toutes prêtes pour ça. Mais je ne suis pas sûr que tu puisses utiliser une regexp sur un champ suivi d'un like.
Tu remarqueras que google te sort aussi ce qu'il trouve dans des balises.

une solution simple et gourmande : enregistrer dans ta table aussi ton texte sans les balises (strip_tags devrait faire l'affaire) et chercher sur ce champ.