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