Regex

Fermé
maxeem - 7 août 2005 à 15:35
 maxeem - 9 août 2005 à 12:07
Bonjour, j'aimerai extraire "quelquechose" d'une variable comme celle ci
$test = [b]quelquechose[/b];

il y a moyen avec les regex (expressions regulières)
mais je ne sais pas m'en servir.... merci

11 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
7 août 2005 à 19:29
Salut,

Avec quel langage ?

Les balises "[b]" et "[/b]" font parties de la variable ou c'est toi qui essayais de mettre l'expression "quelquechose" en gras ?
0
grdscarabee Messages postés 134 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 7 août 2005 74
7 août 2005 à 23:48
Avec une expression régulière étendue cela donnerait quelque chose du type :
\[.+\](.+)\[/.+\]

..et reconnaîtrait la plupart des balises phpBB

Bien sûr il faut adapter l'expression régulière à ton langage, notamment pour ce qui est des caractères spéciaux !

GrdScarabe
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
8 août 2005 à 00:06
Je dirais plutôt quelque chose du genre:
\[.+\]([^[]+)\[/.+\]

Sinon il va prendre le texte de la première balise ouvrante à la dernière fermante.

Ou alors:
\[.+\](.+)?\[/.+\]
0
(language = php)

et je vfais comment pour récuperer ce qu'il y a dedans ces balises avec ces expessions régulieres?? svp
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 août 2005 à 10:09
'lut,


Tu veux enlever les balises donc?

Il te faut un preg_replace (http://de2.php.net/manual/en/function.preg-replace.php) avec comme paramètres:

preg_replace((\[.+\])(.+?)([/.+\]),${2},$texteoriginal)


Un truc dans le genre je pense...essaye aussi avec .+ a la place de .+?, je connais pas le comportement par défaut dans php...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 14
8 août 2005 à 10:24
Il y a ce site très intéressant dédié aux expresion régulière.
http://www.expreg.com/

l'exemple suivant est proche du tiens : http://www.expreg.com/voir38

ton besion doit être proche de ceci (non testé) :
"^\[b](.*?)[\[/b]$"
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 août 2005 à 10:26
L'exemple en question est valable dans le cas ou la chaine est toute seule et pas noyée au milieu d'un texte...

Si c'est le cas et si les balises n'ont qu'une lettre à chaque fois le mieux est encore de prendre une substring :)
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
8 août 2005 à 10:27
Remarque même si la balise a une autre longueur, il suffit de prendre l'index de la première occurence de ] et de la deuxième occurence de [ comme références :)
0
merci a tous
0
en fait je n'y arrive pas
preg_replace((\[.+\])(.+?)([/.+\]),${2},$texteoriginal)
me renvoi une erreur du type ASCII machin :(
0
up
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
9 août 2005 à 09:36
Ton texte il est comment au départ? Genre:


Ceci est [b]mon[/b] texte à [b]moi[/b] que [b]j'ai[/b].


ou bien

[b]C'est mon texte[/b]



ou bien encore

c'est [b]mon[/b] texte



?
0
non mais j'ai réglé ça ... le blem maintenant c'est d'extraire "xxx" et "yyy" de :
$string = "blabla[email]xxx[/email]blabla[email]yyy[/email]blabla

:(
0
bon voila j'ai enfin réussi
je usis passé par des explode str_replace et split a gogo
mon code fait 30 lignes pour extraire mais bon ça marche :d et rapide a l'execution merci a tous
0