lokicorp Posté 7 Juillet 2011 Posté 7 Juillet 2011 Bonjour, Je cherche à utiliser la fonction preg_replace dans le moteur de recherche de mon site (pour précision c'est un site dynamique ou le contenu des pages se trouve dans une DB). Lorsqu'un visiteur saisie une chaine de caractères dans ce moteur de recherche cela lui affiche un certain nombre de résultat et si il en sélectionne un, il se retrouve sur la page concernée avec toutes les occurrences de la chaine recherchée surlignées en jaune. seulement voilà ma fonction preg_replace qui devrait exclure les balises html de mise en forme de la page ne le fait pas tout le temps, et de temps à autre je me retrouve avec balises html surlignées en jaunes.... ex: si je cherche la chaine "réf" il va me ramener des pages contenants les mots "référant, référence...." mais aussi les balises html "<a href=" voilà l'expression régulière que j'utilise : $regex2 = "#([^<][\w\s=/\"_-]+)(".$_SESSION['recherche_litterale'].")([\w\s]+[^>])#isU";echo preg_replace($regex2,"$1<font style=\"background-color: #ffff00\">$2</font>$3",$rq['art_contenu']); merci d'avance de votre aide, moi là je tourne en rond....
Clair de Lune Posté 7 Juillet 2011 Posté 7 Juillet 2011 Bonjour As-tu essayé de faire le "nettoyage" avec la fonction PHP strip_tags ?
lokicorp Posté 7 Juillet 2011 Auteur Posté 7 Juillet 2011 Salut, le problème de strip_tags c'est que ça supprime toutes les balises html ce qui implique que ça supprime aussi toute ma mise en forme.
Leonick Posté 7 Juillet 2011 Posté 7 Juillet 2011 Ca ne répond pas directement à ta question, mais voici un très bon outil pour tester les regex offline http://weitz.de/regex-coach/ : tu prends le code html des pages où ça ne passe pas et tu peux ainsi affiner la regex
lokicorp Posté 8 Juillet 2011 Auteur Posté 8 Juillet 2011 Bon j'ai trouvé tout seul comme un grand... Pour ceux que ça peut intéresser voilà ma regex : $regex2 = "#(>[\w\sàáâãäåæçèéêëìíîïðñòóôõöøÞùúûüýÿ÷%§~{}|@°£€µ&$\\/\(\).,;_:'\"\#\[\]!?*+-]*)(".$_SESSION['recherche_litterale'].")([\w\sàáâãäåæçèéêëìíîïðñòóôõöøÞùúûüýÿ÷%§~{}|@°£€µ&$\\/\(\).,;_:'\"\#\[\]!?*+-]*<)#isU";echo preg_replace($regex2,"$1<font style=\"background-color: #ffff00\">$2</font>$3",$rq['art_contenu']);
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant