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
salut merci de ton aide, j'ai du mal à insérer ([^'"]*) dans ma regex. La regex entière cela donnerais quoi stp? désolé :$
$alt = preg_replace('#\[img alt=\'([^'"]*)\'\](.*)\[/img\]#i', '$1', $string , 1);
Mais tu ne laisses pas la possibilité de la présence des autres attributs là, si ?
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.
En effet : \[img.*?alt='(.*?)'.*?\]
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?
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.
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
Personnellement, j'ai débuté en regex avec ça et je continue d'apprendre