ID: 38368 Updated by: [EMAIL PROTECTED] Reported By: bloudon at townnews dot com -Status: Assigned +Status: Bogus Bug Type: PCRE related Operating System: Slackware Linux 10 PHP Version: 5CVS-2006-08-07 (snap) Assigned To: andrei New Comment:
not a problem in PHP surely. And I would say this is expected (at least the master Friedl convinved me so), as the engine will do a second attempt to match and will indeed match the empty string (because of the *) Previous Comments: ------------------------------------------------------------------------ [2006-08-07 15:02:54] bloudon at townnews dot com Description: ------------ When using preg_replace with a pattern of '/(.*)/' or similar, the returned string will contain two instances of the replacement text, with the second instance appended to the first and given empty backreferences. This behavior does not occur when the pattern is anchored to the start of the string: '/^(.*)/'. ./configure --with-apxs --enable-versioning --enable-memory-limit --with-mysql=/usr --enable-xslt --with-xslt-sablot --with-gd --with-jpeg-dir=/usr --with-zlib-dir=/usr --with-ttf=/usr --with-freetype-dir=/usr --enable-gd-native-ttf --enable-bcmath --with-mime-magic Reproduce code: --------------- <?php echo preg_replace('/(.*)/', 'a$1b', 'foo') ."\n"; echo preg_replace('/(.*)$/', 'a$1b', 'foo') ."\n"; echo preg_replace('/^(.*)/', 'a$1b', 'foo') ."\n"; echo preg_replace('/^(.*)$/', 'a$1b', 'foo') ."\n"; echo preg_replace('/.*/', 'ab', 'foo') ."\n"; echo preg_replace('/f*/', 'ab', 'foo') ."\n"; ?> Expected result: ---------------- afoob afoob afoob afoob ab aboo Actual result: -------------- afoobab afoobab afoob afoob abab ababoaboab ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38368&edit=1