Bonjours, a tous.

Plusieurs questions ici.

Voila je travail actuellement sur les fonctions de recherche d'un site juridique, et j'ai remarqué que quand je cherchais "Manquement d'État" ça ne me renvoie rien ! Alors que si je cherche "Sociétés commerciales" où "Contrat d'assurance" ça marche sans soucis.

J'ai donc remarqué que quand une recherche cumulait accent ET apostrophe ça ne fonctionnait pas.

Une fois le constat fait, j'ai compris le soucis, je vais voir dans la base et la je vois sur des milliers de documents dont les mots clé sont "Manquement d’État" ... Bon a ce moment la je vais voir le code du module d'insertion et là sans surprise, le précédent stagiaire avait fait des htmlentities() dans les INSERT

Du coup quand je cherchait un mot avec accent, vu que pour la recherche, je passe par htmlentities() ça marchait, idem pour les recherches sans accents. Mais quand on combine l'apostrophe et les accents ça ne trouve pas logiquement.


Donc première question, j'ai immédiatement remplacé tous les htmlentites des modules par des mysql_real_escape_string() dans les INSERT. Problème quand j'ajoute "Manquement d'état" dans ma base ça m'affiche "Manquement d\'état" et impossible de faire une recherche convenable sur "Manquement d'état".

Je vois dans le manuel php

"Si magic_quotes_gpc est activée, appliquez d'abord la fonction stripslashes() à vos données. Utiliser cette fonction sur des données qui ont déjà été protégées, les protégera une deuxième fois"

J'ai donc remplacé mes mysql_real_escape_string($texte) par des mysql_real_escape_string(stripslashes($texte)) dans mes INSERT et là, ça ajoute convenablement "Manquement d'état" dans ma base et je peux faire toutes les recherches que je veux en mélangeant majuscule minuscule apostrophe sans soucis. Mais est ce que la requête est bien sécurisé en associant escape et stripslashes comme j'ai du le faire ??

Sinon mon autre soucis, j'ai des dizaines de millier de "eacute;" "Eacute;" etc dans ma base. Y a t'il un moyen rapide de les remplacer ? sans avoir besoin de créer une fonction qui recupere les documents ou il y a des &eacute, remet les accents et fait un update. Car bon je suis en stage et je veux pas me rater avec une grosse boucle qui update toute une base qui contient des dizaines de millier de document ^^ mais je crois que j'aurai pas le choix...

Ou alors plutôt que tout remplacé dans la base, y a t il un moyen de construire une requete php qui trouve "Manquement d’État" dans ma base ? ^^


Merci d'avance de votre aide. Et désolé pour le pavé, j'essaie d'être le plus clair possible

PS : la base est en utf8_unicode_ci