JeuWeb - Crée ton jeu par navigateur
[PHP] regex parenthèse capturantes - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [PHP] regex parenthèse capturantes (/showthread.php?tid=6130)

Pages : 1 2


[PHP] regex parenthèse capturantes - php_addict - 15-05-2012

bonjour

j'ai un petit problème de regex, je suis pas bien balaise en regex, pourriez-vous m'aider svp?

il s'agit de parser du bbcode, voici le bbcode en question:

Code :
[img alt='texte' width='100' height='100']

pour récupérer le alt je fais ceci (qui ne marche pas...):


$alt = preg_replace('#\[img alt=\'(.*)\'\](.*)\[/img\]#i', '$1', $string , 1);

le problème c'est que la 1ere parenthèse capturante (.*) me capture texte' width='100' height='100 au lieu de texte

un petit coup de pouce svp?

merci bonne journée


RE: [PHP] regex parantheses capturantes - srm - 15-05-2012

"parenthèse"
([^'"]*)



RE: [PHP] regex parenthèse capturantes - php_addict - 15-05-2012

salut merci de ton aide, j'ai du mal à insérer ([^'"]*) dans ma regex. La regex entière cela donnerais quoi stp? désolé :$


RE: [PHP] regex parenthèse capturantes - srm - 15-05-2012

$alt = preg_replace('#\[img alt=\'([^'"]*)\'\](.*)\[/img\]#i', '$1', $string , 1);


RE: [PHP] regex parenthèse capturantes - niahoo - 15-05-2012

Mais tu ne laisses pas la possibilité de la présence des autres attributs là, si ?


RE: [PHP] regex parenthèse capturantes - Sephi-Chan - 15-05-2012

C'est plutôt didactique ou à usage réel ? Car si c'est pour une utilisation réelle, autant utiliser une solution open source : ce sera plus robuste et fiable.


RE: [PHP] regex parenthèse capturantes - srm - 15-05-2012

En effet : \[img.*?alt='(.*?)'.*?\]


RE: [PHP] regex parenthèse capturantes - php_addict - 15-05-2012

Bon merci à vous tous!

voici ma regex:

Code :
$string = '[img alt='blabla' autre='blabla'][/img]';

$alt= preg_replace('#\[img(.*)alt=\'(.*)\'(.*)\](.*)\[/img\]#isU', '$2', $string);

merci Oxman, puis je te demander à quoi sert les ? dans ton exemple, j'ai beau eu lire la doc je ne suis pas certain, d'ailleurs il semblent ne pas être utiles dans cet exemple non ?

Sephi, quelles sont les sources open source auxquelles tu penses?


RE: [PHP] regex parenthèse capturantes - Sephi-Chan - 15-05-2012

En cherchant GitHub PHP BBCode et PHP BBCode parser j'ai trouvé plusieurs projets.
  • BBCode parser par wookieb. C'est pas documenté (enfin si, mais en Polonnais…) mais il suffit de lire les tests. Ça a l'air tenu à jour.
  • PHP Bulletin Board Code (extension PECL).
  • NBBC, qui n'a plus l'air maintenu mais qui doit bien fonctionner puisqu'il a une suite de tests et qu'il est bien documenté.

Dans tous les cas, tu es gagnant.


RE: [PHP] regex parenthèse capturantes - supermeganono - 19-05-2012

Bien que j'arrive en retard, je me permet de partager cette ressource qui pourra t'être utile :

http://www.gethifi.com/tools/regex

Tu clique sur le texte, tu mets ton text, et tu fabrique ta regex. J'trouve ça trop génial Wink
Personnellement, j'ai débuté en regex avec ça et je continue d'apprendre Smile