ID: 49508
Updated by: [email protected]
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