titiplanti Posté 23 Septembre 2009 Posté 23 Septembre 2009 Bonjour, Afin d'améliorer le référencement des images de mon forum, j'essaye d'améliorer le BBcode. Pour cela je trifouille dans les fonctions de remplacement des chaines. Je veux remplacer : [img=http://urlimage]commentaire alt[/img] par <img src="http://urlimage" alt="commentaire alt" /> Voici le code que j'ai mis : preg_replace("#\[img=(.*?)\](.*?)\[/img\]#si", "<img src=\"$1\" alt=\"$2\" />", $message); mais qui ne fonctionne pas ... Pouvez-vous m'aider ? (Je suis sous php5.)
Jeanluc Posté 23 Septembre 2009 Posté 23 Septembre 2009 Bonjour, Essaie ceci : preg_replace("#\[img=(.*)\](.*)\[/img\]#siU", "<img src=\"$1\" alt=\"$2\" />", $message); Cela rendra l'expression régulière moins gourmande. Jean-Luc
titiplanti Posté 23 Septembre 2009 Auteur Posté 23 Septembre 2009 Merci mais ça ne marche pas mieux ...
Jeanluc Posté 24 Septembre 2009 Posté 24 Septembre 2009 "ça ne marche pas" veut dire que tu obtiens quoi ? Jean-Luc
titiplanti Posté 24 Septembre 2009 Auteur Posté 24 Septembre 2009 la chaine test [img=http://www.mathforu.com/transfertfichier/fichiers/1.gif]commentaire alt ![/img] n'est pas remplacée par le code html. Elle n'est donc probablement pas identifiée comme une chaine devant être remplacée ...
Jeanluc Posté 24 Septembre 2009 Posté 24 Septembre 2009 J'ai vérifié sur deux testeurs de REGEX et les résultats étaient ok dans les deux cas. Tu as bien ajouté l'opton de recherche U (inversion de la tendance à la gourmandise) ? Jean-Luc
titiplanti Posté 24 Septembre 2009 Auteur Posté 24 Septembre 2009 A quoi sert ce paramètre U ? (je ne comprends pas pour la gourmandise) Où sont les testeurs REGEX ? Pour info, voici la ligne de code précédant celle que j'essaye de mettre en place : $message = preg_replace("#\[img\](.*?)\[/img\]#si", "<img src=\"\\1\" alt=\"\\1\" />", $message);
Jeanluc Posté 24 Septembre 2009 Posté 24 Septembre 2009 La gourmandise, c'est le fait que, sans option spéciale, une expression régulière essaie de capturer un maximum de caractères. Avec l'option U, l'expression régulière capturera un minimum de caractères. Exemple: tu veux capturer ce qui est entre [ img] et et il y a 3 images de ce type dans la page. Ce que tu captures est en vert: - avec la gourmandise: [ img]image 1 ... [ img]image 2 ... [ img]image 3 - sans la gourmandise (1 capture): [ img]image 1 ... ... [ img]image 3 - sans la gourmandise (nombre illimité de captures): [ img]image 1 ... [ img]image 2 ... [ img]image 3 J'espère que c'est clair. Pour les testeurs de REGEX, il y a celui-ci : http://www.regextester.com/ et le mien en français : http://www.annuaire-info.com/outil-referencement/expression-reguliere La ligne de code à la fin de ton post ("précédant celle que j'essaye de mettre en place"), elle marche ? Jean-Luc
titiplanti Posté 25 Septembre 2009 Auteur Posté 25 Septembre 2009 (modifié) Clair oui, merci pour les explications. La ligne de code à la fin de ton post ("précédant celle que j'essaye de mettre en place"), elle marche ? Oui elle fonctionne très bien. PS : tu devrais cliquer sur le second lien que tu donnes pour voir le piètre résultat ... (j'ai tout de même trouvé le testeur merci !) Modifié 25 Septembre 2009 par titiplanti
Dan Posté 25 Septembre 2009 Posté 25 Septembre 2009 Le bug concernant l'URL a été confirmé par Invision. JeanLuc n'y est pour rien C'est le mot "expression" qui est remplacé par "expr<b></b>ression" dans les URLs.
titiplanti Posté 26 Septembre 2009 Auteur Posté 26 Septembre 2009 Oui non je n'ai jamais pensé que JeanLuc s'amusait à rajouter des <b></b> dans son url ! Pour en revenir à mon problème d'expression régulière, avez-vous d'autres idées même farfelues ? J'ai essayé de nombreuses choses sans que ça fonctionne : la chaine BBcode n'est pas reconnue ... phpinfo() me donne PHP Version 5.2.4-2ubuntu5.7
Jeanluc Posté 28 Septembre 2009 Posté 28 Septembre 2009 J'y perds mon latin. Deux suggestions : - tu pourrais essayer en remplaçant les $1 et $2 par \\1 et \\2 (ça ne devrait rien changer, mais on ne sait jamais) - soit dit en passant, tes (.*?) pourraient être remplacés par des (.*) Jean-Luc
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant