You are here: Re: Any regex pro's out there? « PHP Programming Language « IT news, forums, messages
Re: Any regex pro's out there?

Posted by nel on 06/06/07 17:12

Yep thanks, I realized that when I googled "U modifier".

This is what I'm using in case anyone wants to know:

//first replaces any line breaks with a token
identifier since preg_replace doesn't work with multiply lines
$cleaned_content = str_ireplace("\n","<!--// New Line //-->",
$content);
//this creates our regular query sequence... perl-
stylezzz
$reg = '/<!--\/\/ Remove Begin \/\/-->(.+)<!--\/\/ Remove End \/\/--
>/U';
$cleaned_content = preg_replace($reg,"",$cleaned_content);
//now just put our line breaks back into place
$cleaned_content = str_ireplace("<!--// New Line //-->","\n",
$cleaned_content);

The above code will replace everything in my string (which I pulled
from an HTML file) with all the <!--// Remove Begin //--> tags and
<!--// Remove End //--> and anything in between them removed!

The U modifier solved my problem where It was making "abxxab" into ""
when it's supposed to replace everything between a and b instead of
making "abxxab" into "xx";

Thanks again!
-nel


On Jun 5, 8:04 pm, Mike P2 <sumguyovrt...@gmail.com> wrote:
> On Jun 5, 11:20 am, Rik <luiheidsgoe...@hotmail.com> wrote:
>
>
>
> > On Tue, 05 Jun 2007 03:56:05 +0200, shimmyshack <matt.fa...@gmail.com>
> > wrote:
> > > On Jun 5, 2:18 am, nel <NajibKa...@gmail.com> wrote:
> > >> I have two tags:
> > >> <!--// Remove Begin //--> and <!--// Remove End //-->
> > >> I want to use regi_replace() to remove everything between these tags.
> > >> The thing is, these tags can be repeated throughout the code.
> > >> <!--// Remove Begin //-->(.+)<!--// Remove End //--> works, but only
> > >> if the tags exists once. Otherwise, it parses out everything between
> > >> the first <!--// Remove Begin //--> and the last <!--// Remove End //--
> > >> How could i modify this so that it will...
> > > i should have added, google for ungreedy U switch - your matching is
> > > too greedy, and slurps up one giant match rather than many "least"
> > > matches
> > Or just use the ? modifier:
> > preg_replace('|<!--// Remove Begin //-->.*?<!--// Remove End
> > //-->|si','',$string);
> > --
> > Rik Wasmus
>
> Just a side note to nel, if you are going to use shimmyshack's U
> modifier you have to use PCRE instead as Rik is doing, and be sure not
> to copy Rik's exact pattern unless you switch because you are using
> PHP's built in regex functions.
>
> At least, I think you are using PHP's built-in regex stuff, assuming
> that by regi_replace() you mean eregi_replace()
>
> -Mike PII

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация