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

Reply via email to