Bienvenue visiteur (Inscription |  Connexion)
Qui est en ligne ?
Il y a : 10 utilisateurs en ligne, consultez le détail
Auteur Message
jblecanard
#0 Message posté le : 26-01-2007 à 19:15:56


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
Bonjour

je code un bbcode avec php. J'utilise des expressions rationelles, mais j'ai un problème.

Imaginons que je veuille bbencoder cette chose :


[ g ] Gras [ / g ] Pas gras [ g ] Gras[ / g ]



Mas regexp est "/\[g\](.+)?\[\/g\]/s" avec le "s" pour prendre les sauts de lignes.

Je m'attend donc à obtenir :

"Gras Pas gras Gras"

Mais j'ai

"Gras[ / g ] Pas gras [ g ]Gras"


Il matche donc la tout grande expression au lieu de matcher les petites d'abord. Je fais ça avec la fonction preg_replace mais je suis prêt à changer de méthode...

Comment s'y prendre ?

--Message édité par jblecanard le 26-01-2007 à 19:18:31--


-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -
tamiel
#1 Message posté le : 27-01-2007 à 12:48:36


Hobbit


Forum : Inscrit
Association :
Arrivé(e) le : 17-10-2003
Nombre de messages : 1067
N'utilise pas les . !

Utilise plutôt :

[[:blank:]], [[:alnum:]], .. etc

Ca optimisera mieux tes regexp .

Au lieu de (.)+, je mettrais (([[:blank:]]|[[:alnum:]])+) (A tester quand même)

mais dans ce cas on ne prend que les espaces, tabulations, chiffres et lettres .

Donc si tu veux rajouter d'autres caractères, il y a d'autres symbôles .





--Message édité par tamiel le 27-01-2007 à 12:49:09--


-------------------------------------
If you don't know, ask manpage !
jblecanard
#2 Message posté le : 03-02-2007 à 23:12:09


Jedi


Forum : Modérateur
Association : Membre fondateur
Arrivé(e) le : 08-01-2005
Nombre de messages : 4030
Hélas même de cette manière, le résultat est le même.

Edit : en ajoutant le modifier "U" au "s" déjà existant, celà fonctionne, cependant, il reste un problème vis-à-vis des balises emboitées... Mais je constate que ce problème apparaît sur tous les bbcodes, y compris celui de trustonme.

Résolu donc...

--Message édité par jblecanard le 04-02-2007 à 15:53:33--


-------------------------------------
C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon -