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

11 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. 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
    1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   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
  3. 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
  4. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    '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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. shaiulud Messages postés 51 Date d'inscription   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
    1. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
       
      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
    2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
       
      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
  7. maxeem
     
    en fait je n'y arrive pas
    preg_replace((\[.+\])(.+?)([/.+\]),${2},$texteoriginal)
    me renvoi une erreur du type ASCII machin :(
    0
  8. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    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
  9. 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
  10. 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