ID: 49508 Updated by: j...@php.net Reported By: stas at metalinfo dot ru -Status: Open +Status: Bogus Bug Type: PCRE related Operating System: Debian Lenny PHP Version: 5.2.10 New Comment:
\ is escape char inside double quotes. If you use double quotes, you need to escape the escape char: "\\1" Previous Comments: ------------------------------------------------------------------------ [2009-09-09 07:48:35] stas at metalinfo dot ru Description: ------------ preg_replace changes replaced string encoding when replacement parameter is double quoted. Reproduce code: --------------- $source = 'asdfasd asdf asdf [company=456[replacement]] asdf'; echo preg_replace('~\[\s*company=([0-9]+)\[\s*([^\]]+\s*)\]\]~', '\2', $source); echo preg_replace('~\[\s*company=([0-9]+)\[\s*([^\]]+\s*)\]\]~', "\2", $source); Expected result: ---------------- asdfasd asdf asdf replacement asdf asdfasd asdf asdf replacement asdf Actual result: -------------- asdfasd asdf asdf replacement asdf asdfasd asdf asdf asdf ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=49508&edit=1