Re: Re: Negative Look Ahead Regex - Code Mistake or Bug?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Al,

I am using preg_quote in the live code. I omitted it from the example code
to simplify the example.

Thanks,
Cameron


On 8/18/08 8:31 AM, "Al" <news@xxxxxxxxxxxxx> wrote:

> Run your pattern thru preg_quote() prior to using it in your preg_replace().
> Don't backslash 
> anything yourself, let preg_quote() do it.
> 
> Cameron B. Prince wrote:
>> Hello,
>> 
>> I¹ve run into a problem with a regex and need help determining if this is my
>> mistake or a bug. The regex is for inserting a SID into every link in the
>> buffer before it¹s flushed, but only when each link doesn¹t already have a
>> SID.
>> 
>> An example of the code is here:
>> 
>> $buffer = 
>> preg_replace('/"http\:\/\/www\.domain\.com([\/\w\.-]*)(?!\?PHPSESSID\=2u0cca
>> ffoh6jaeapkke35qpp87;?)/',
>> '"http://www.domain.com$1?PHPSESSID=t9gksvpdcuobsnqt98qloe6lg4;', $buffer);
>> 
>> The code works correctly in most cases except when a SID already exists and
>> there is a path after the .com such as:
>> 
>> http://www.domain.com/path1/path2.php?PHPSESSID=2u0ccaffoh6jaeapkke35qpp87;
>> 
>> When this URL is processed by the regex, it becomes:
>> 
>> http://www.domain.com/path1/path2.ph?PHPSESSID=t9gksvpdcuobsnqt98qloe6lg4;p?
>> PHPSESSID=2u0ccaffoh6jaeapkke35qpp87;
>> 
>> 
>> So the problem is the regex not only falsely matches, it's inserting the SID
>> in between 2nd and 3rd letters of the extension.
>> 
>> You can see the code in action here:
>> 
>> http://kottmann.com/test.php
>> 
>> The full source for the test code is also available when viewing the source
>> of this page.
>> 
>> I've tested this on PHP v5.1.6 and PHP v5.2.6.
>> 
>> TIA,
>> Cameron
>> 
>> 
>> 
>> 
>> 
>> 
>> 



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



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux