PHP - Expressions régulières

Lewis Networks -  
bot1fo Messages postés 10 Statut Membre -
Bonjour,

J'essaie de programmer un système de BBCode pour mon site, tout fonctionne sauf lorsque je veux imbriquer plusieurs BBCode,

Du genre:
[URL U="..." T="..."][THUMB T="..."]...[/THUMB][/URL]


Le code:
[THUMB T="..."]...[/THUMB]
est correctement parsé, par contre pour [URL U="..., la regexp prend en compte la totalité du code généré, donc cela donne:
<a href="..." T="..." onclick="..." T="..."><img src="..." alt="..." /></a>


Je pense que le la solution que les " ne soient pas pris en compte dans la condition de la regexp (.*?), je ne sais pas comment faire ceci.

Voici le code PHP:

$pattern = array(
  '`\[THUMB T="(.*?)"](.*?)\[/THUMB]`',
  '`\[URL U=".*?" T=".*?"](.*?)\[/URL]`'
);

$replace = array(
  '<img src="$2" class="item-picture" alt="$1" />',
  '<a href="$1" onclick="javascript:window.open(\'$1\'); return false" title="$3">$2</a>',
);

$content = preg_replace($pattern, $replace, $content);  




Merci d'avance pour toute aide, il me reste juste à résoudre ce problème pour terminer mon dernier site, tout fonctionne autrement. @++
A voir également:

1 réponse

bot1fo Messages postés 10 Statut Membre 5
 
Au lieu de ".*?" essai de mettre ceci : "[^"]*".
En gros le .* prend tout le reste de ta chaine, en excluant le " tu t'arrêteras au prochain " trouvé et donc tu ne parseras pas la totoalité de ta chaine. A tester.
Pour t'aider : http://www.aidejavascript.com/article146.html#top_form
0