Any luck with the regex I supplied? (<\?)(?!php|=|>|(?:\s+(?=\=))) /(<\?)(?!php|=|>|(?:\s+(?=\=)))/ - 1st Capturing group (<\?) - < matches the character < literally - \? matches the character ? literally - (?!php|=|>|(?:\s+(?=\=))) Negative Lookahead - Assert that it is impossible to match the regex below - 1st Alternative: php - php matches the characters php literally (case sensitive) - 2nd Alternative: = - = matches the character = literally - 3rd Alternative: > - > matches the character > literally - 4th Alternative: (?:\s+(?=\=)) - (?:\s+(?=\=)) Non-capturing group - \s+ match any white space character [\r\n\t\f ] - Quantifier: Between one and unlimited times, as many times as possible, giving back as needed [greedy] - (?=\=) Positive Lookahead - Assert that the regex below can be matched - \= matches the character = literally On Fri, Feb 14, 2014 at 2:41 PM, Daevid Vincent <daevid@xxxxxxxxxx> wrote: > Now we're getting somewhere maybe? ;-) > > On my text examples it seems to look good but I think it's not much > different than using a \s > > <? > if ($foo) > ?> > <?= $foo ?> <?=$foo;?> > <? if($foo) ?> > <?php $foo='bar'; ?> > <?= $foo ?> > <?=$foo?> > <?echo 'i told you so';?> > <?phpecho 'this one fails';?> > > If I substitute '<?php' then I end up with this: > > <?php > if ($foo) > ?> > <?= $foo ?> <?=$foo;?> > <?php if($foo) ?> > <?php $foo='bar'; ?> > <?= $foo ?> > <?=$foo?> > <?phpecho 'i told you so';?> <-- this one breaks now though > <?phpecho 'this one fails';?> <-- don't care as it was broken to begin with > > Is there a way to tweak the substitution with that same lookahead idea so > if > it was <? Followed by a character NOT a = then it adds a space? > > > > -----Original Message----- > > From: Joshua Kehn [mailto:josh.kehn@xxxxxxxxx] > > Sent: Friday, February 14, 2014 11:31 AM > > To: Daevid Vincent > > Cc: php-general@xxxxxxxxxxxxx > > Subject: Re: Anyone have a tool/script to convert <? to <?php (but > not > > <?=) > > > > Use a lookahead: > > > > <\?(?!(=|php)) > > > > http://l.kehn.io/image/1H2J0p0T472k > > > > --jk > > > > On 14 Feb 2014, at 11:21, Daevid Vincent wrote: > > > > > Try it... > > > > > > <?php $foo='bar'; ?> > > > <?= $foo ?> > > > <?=$foo?> > > > <?echo 'i told you so';?> > > > <?phpecho 'this one fails';?> > > > > > > The ONLY one that gives a parser error is the LAST one where yes, a > > > space is required after a <?php > > > > > > That is NOT the case for <? or <?= > > > > > >> -----Original Message----- > > >> From: Aziz Saleh [mailto:azizsaleh@xxxxxxxxx] > > >> Sent: Friday, February 14, 2014 10:54 AM > > >> To: Daevid Vincent > > >> Cc: php-general@xxxxxxxxxxxxx > > >> Subject: Re: Anyone have a tool/script to convert <? to <?php > > >> (but not > > >> <?=) > > >> > > >> What I posted (and all the others) would work, replacing all > > >> instances of > > >> "<? " (notice the space) with "<?php " should work, it will leave all > > >> existing <?= and <?php alone (since having a space after ? and > > >> before > > >> =/php would produce a parser error. > > >> > > >> Not sure why you are saying that spaces are irrelevant thou. > > >> > > >> > > >> On Fri, Feb 14, 2014 at 1:34 PM, Daevid Vincent <daevid@xxxxxxxxxx> > > >> wrote: > > >> > > >>> *sigh* > > >>> > > >>> <?=$foo?> is perfectly valid so is <?=$foo;?> or any combination > > >>> WITH > > >>> SPACES OR NOT. > > >>> If this were trivial, I wouldn't have asked the list. I've been > > >>> coding PHP > > >>> since 1996. ;-) > > >>> > > >>> So if you have <? you have to make sure it doesn't have a '=' after > > >>> the > > >>> '?' to convert to '<?php' > > >>> > > >>> Spaces are irrelevant and can NOT be relied upon as a unique > > >>> feature. > > >>> > > >>>> -----Original Message----- > > >>>> From: Daevid Vincent [mailto:daevid@xxxxxxxxxx] > > >>>> Sent: Wednesday, February 12, 2014 2:57 PM > > >>>> To: php-general@xxxxxxxxxxxxx > > >>>> Subject: RE: Anyone have a tool/script to convert <? to <?php > > >>>> (but > > >>> not > > >>>> <?=) > > >>>> > > >>>> Thanks guys for the replies so far, however, if it were a simple > > >>>> search > > >>> and > > >>>> replace I wouldn't have to ask ;-) > > >>>> > > >>>> The trick is that "<?=" is valid and legal and I want to keep > > >>>> those. I > > >>> only > > >>>> want to change if they are specifically "<?" > > >>>> > > >>>> Maybe there is some regex guru out there that knows the magic > > >>> incantation. > > >>>> > > >>>> Related, for extra credit it drives me bonkers to see this: > > >>>> > > >>>> Hello <?= $username; ?> > > >>>> > > >>>> Note the end semicolon on the variable. I'd want to strip all those > > >>>> off > > >>> too, > > >>>> but that is also not a trivial task if you think about it as it can > > >>>> only > > >>> be > > >>>> removed if proceeded with <?= > > >>>> > > >>>> > > >>>> > > >>>> -- > > >>>> PHP General Mailing List (http://www.php.net/) > > >>>> To unsubscribe, visit: http://www.php.net/unsub.php > > >>> > > >>> > > >>> -- > > >>> PHP General Mailing List (http://www.php.net/) > > >>> To unsubscribe, visit: http://www.php.net/unsub.php > > >>> > > >>> > > > > > > > > > -- > > > PHP General Mailing List (http://www.php.net/) > > > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Nickolas Whiting Consultant