Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/07/2008, à 20:21

benmic

Aide pour une regex

Hello,

je suis en train de chercher une regex qui me permettrait de "trouver" tous les mots dans un texte, à l'exception des mots provenant de balises de type bbcode.

En gros, dans le texte suivant

[size=150][b]Gradué en Informatique Industrielle[/b][/size]

[b][u]Emplois[/u][/b][/size]

Il faut que je choppe

Gradué 
en 
Informatique 
Industrielle
Emplois

J'ai sortit ma plus belle regex qui me donne ceci

    * [0]=> array
          o [0]=>size
          o [1]=>[b]Gradué en
          o [2]=>Informatique
          o [3]=>Industrielle[/b]
          o [4]=>size
          o [5]=>b
          o [6]=>[u]Emplois[/u]
          o [7]=>b
    * [1]=> array
          o [0]=>size
          o [1]=>Gradué en
          o [2]=>Informatique
          o [3]=>Industrielle
          o [4]=>size
          o [5]=>b
          o [6]=>Emplois
          o [7]=>b

Ce qui n'est pas mal, mais ce serait encore mieux si je n'avais pas le texte des balises "bbcode"... ni un soucis (apparement) avec les accents (qu'on peut remarquer avec le "Gradué en").

La regex que j'utilise actuellement est

/(?:\[[\pL]+\])?([\pL]+)(?:\[\/[\pL]+\])?/

J'avoue que les regex, c'est clairement pas le truc avec lequel je suis le plus à l'aise et là, je sèche un poil pour corriger ça...
Si quelqu'un peut m'aider à sauver les derniers cheveux qu'il me reste, je suis preneur wink

Hors ligne

#2 Le 17/07/2008, à 22:15

Dark-Sham

Re : Aide pour une regex

Vu la forme de ta Regex, je suppose que c'est du Perl. J'me trompe ?

Pour la méthode, tu devrais séparer toutes les chaines avec le bbcode du genre :

array[0] = "[size=150][b]Gradué en Informatique Industrielle[/b][/size]"
array[1] = "[b][u]Emplois[/u][/b][/size]"

Puis exploser le texte avec comme délimiteur les espaces dans chaque array.

Dernière modification par Dark-Sham (Le 17/07/2008, à 22:15)


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#3 Le 17/07/2008, à 23:49

benmic

Re : Aide pour une regex

Dark-Sham a écrit :

Vu la forme de ta Regex, je suppose que c'est du Perl. J'me trompe ?

C'est une regex pcre, mais utilisée en php (preg_* )

Dark-Sham a écrit :

Pour la méthode, tu devrais séparer toutes les chaines avec le bbcode du genre :

array[0] = "[size=150][b]Gradué en Informatique Industrielle[/b][/size]"
array[1] = "[b][u]Emplois[/u][/b][/size]"

Puis exploser le texte avec comme délimiteur les espaces dans chaque array.

En faisant cela, je vais me retrouver avec

array[0] = "[size=150][b]Gradué"
array[1] = "en"
array[2] = "Informatique 
array[3] = "Industrielle[/b][/size]"
array[4] = "[b][u]Emplois[/u][/b]"

Ce qui ne m'arrange pas car je devrai encore rajouter une "suppression" sur les bbcodes.

Hors ligne