Regex

maxeem -  
 maxeem -
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
A voir également:

11 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
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 Statut Membre 74
 
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 8854 Statut Modérateur 1 526
 
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
maxeem
 
(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 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
'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 407 Statut Membre 15
 
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 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
maxeem
 
merci a tous
0
maxeem
 
en fait je n'y arrive pas
preg_replace((\[.+\])(.+?)([/.+\]),${2},$texteoriginal)
me renvoi une erreur du type ASCII machin :(
0
maxeem
 
up
0
teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
maxeem
 
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
maxeem
 
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