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

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

 



Cameron B. Prince schreef:
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.

1. you really shouldn't be stuffing session IDs into URLs (but you may not have that choice)
2. you should let php take care of this by activating the ini setting session.use_trans_sid
(but you may have reasons not to)


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