Les regex c'est bien mais parfois on a besoin de meilleur que soit pour les écrire...
en l’occurrence il y a un bug sur SmiliesSupport : si un utilisateur met le smiley de mot clef :perplexe:, il est d'abord remplacé par l'image <img src="blablabla" alt=":perplexe"/>
mais ensuite viens la deuxième partie du script qui regarde les correspondances spéciales, dans lesquelles il y a par défaut :p smile.png
vous voyez le problème ? la contenu du alt précédent est reparsé par la suite...
et donc je voudrais une regex qui match :p mais pas alt=":p
j'ai bricolé un peu sur http://regexpal.com/ sans rien trouver
vous me direz que je peux modifier le contenu des alt mais on ne sait jamais ce que les utilisateurs vous trouver comme configuration loufoque n'est-ce pas ? ^^
Hors ligne
A priori, il suffit de tenir compte du guillemet double uniquement:
$pattern = '#[^"]:p#'
Hors ligne
je vais essayer de reproduire les conditions (pas fait encore) mais pour regexpal cette syntaxe ne marche pas... après est-ce que le soft est complet.
ah et puis surtout ça empêche de faire un smiley qui commence par le guillemet "
Dernière modification par mistic100 (2011-06-07 19:02:17)
Hors ligne
Une remarque: est-ce vraiment nécessaire d'avoir le mot clé du smiley dans la balise alt?
Hors ligne
pour les malvoyants...
QUOI ? les malvoyants vont rarement sur les sites de photo ?!
pour être "W3C compliant" sinon ^^
Hors ligne
mistic100 a écrit:
QUOI ? les malvoyants vont rarement sur les sites de photo ?!
Je pense que tu te trompe
Hors ligne
c'est ironique...
j'en sais rien en fait
tout ça pour dire que la propriété alt est utile
Hors ligne
mistic100 a écrit:
c'est ironique...
je l'avais bien compris comme cela :-D
Hors ligne
P@t a écrit:
A priori, il suffit de tenir compte du guillemet double uniquement:
$pattern = '#[^"]:p#'
ça marche.. presque, en effet ceci signifie "tout sauf un guillemet", seulement si le smiley est au début du commentaire, ça ne fonctionne pas, puisqu'il n'y a rien avant...
Hors ligne
et si on ajoute un quantificateur '?' ou '*' on revient au cas initial
Hors ligne
que match (.*?) ?
il y a ça dans BBCode Bar, j'arrive pas à saisir la différence avec (.*) à part qu'il y a un changement quand plusieurs balises du même type sont imbriqués, avec (.*?) la première balises fermante est utilisée pour la première balise ouvrante (ce qui n'est pas bon), avec (.*) la dernière balise fermante est associée à la première ouvrante (ce qu'il faut)
mais je ne comprend pas comment on en arrive là...
nb : dans tous les cas le code tel quel ne gère pas plusieurs balises du même type imbriquées, j'essaye de trouver pourquoi.
Hors ligne
ok c'est ce qu'on appelle le mode "ungreedy"
voir ici http://www.skdevelopment.com/php-regula … ssions.php
Hors ligne
mdr
^^
nan nan continue ! je vais me faire des popcorns ! atta je reviens
voilà c'est bon continue stp
=-)
edit : pour éviter toute mauvaise interprétation c'est juste que le monologue "je pose une question je réponds" m'a fait rire.... voilà voilà
Dernière modification par flop25 (2011-06-15 16:25:46)
Hors ligne
mistic100 a écrit:
P@t a écrit:
A priori, il suffit de tenir compte du guillemet double uniquement:
$pattern = '#[^"]:p#'ça marche.. presque, en effet ceci signifie "tout sauf un guillemet", seulement si le smiley est au début du commentaire, ça ne fonctionne pas, puisqu'il n'y a rien avant...
Essaye un truc du genre:
$pattern = '#[\A^"]:p#';
Ou alors:
$pattern = '#(?:^|[^"]):p#';
Hors ligne