Pages : 1
#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
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
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_* )
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
Pages : 1