On Monday 25 November 2002 14:20, Kyle Gibson wrote: > Leif K-Brooks wrote: > > I'm working on adding simple BBCode to my site. I'm currently using the > > [i] tag for testing, with the following code: > > > > <?php > > function bbcode($text){ > > $text = ereg_replace('\\[i\\](.{1,})\\[/i\\]','<i>\\1</i>',$text); > > return $text; > > } > > print bbcode('[i]This[/i] is a [i]test[/i].'); > > ?> > > > > But it prints "<i>This[/i] is a [i]test</i>". Is there a better way to > > do this?
It's not working because it's doing a greedy match. Try (I prefer the PCRE functions over EREG): $text = preg_replace("/\[i\](.*)\[\/i\]/U", "<i>$1</i>", $text); > <? > function bbcode($text) > { > $text = str_replace("[","<",$text); > $text = str_replace("]",">",$text); > return $text; > } > > print bbcode("[i]This[/i] is a [i]test[/i]."); > > ?> This code is simply not suitable. The object is to replace tags as an entity as opposed to simply replacing '[' with '<'. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php