On Thu, May 06, 2004 at 12:47:10PM -0400, Paul Chvostek wrote:
> On Thu, May 06, 2004 at 11:26:34AM -0400, Rob Ellis wrote:
> > >   
> > >     $text = ereg_replace("<!--[^>]*-->","",$text);
> > 
> > you can make the .* less greedy...
> > 
> >   $text = preg_replace('/<!--.*?-->/', '', $text);
> 
> Interesting to know.  My preg-foo is limited; I came at PHP from a
> background of awk and sed, so when I regexp, I'm a little more
> traditional about it.
> 
> Interestingly, from a shell:
> 
>  $ text='one <!-- bleh --> two\nthree <!-- blarg -->four\n'
>  $ printf "$text" | sed -E 's/<!--([^-][^-]?[^>]?)*-->//g'
>  one  two
>  three four
> 
> which is the same behaviour as PHP.  But that still doesn't cover
> multi-line.  PHP's ereg support is supposed to, but doesn't work with
> this particular substitution:
> 
>  $text="one <!--bleh\nblarg -> two\n";
>  print ereg_replace("<!--([^-][^-]?[^>]?)*-->", "",$text);
> 
> returns
> 
>  one <!--bleh
>  blarg -> two
> 
> But we know it really does support multiline, because:
> 
>  $text="aaaabb\nbbcccc";
>  print ereg_replace("[^ac]","",$text);
> 
> returns
> 
>  aaaacccc
> 
> So ... this is interesting, and perhaps I'll investigate it further if
> the spirit moves me.  ;-)

right, to strip multi-line comments with preg_replace you need /s

   $text = preg_replace('/<!--.*?-->/s', '', $text);

- rob

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to