Bug #10626 Updated: escaping doesn't work in the replacement clause
| From: | cynic@php.net | Date: | Thu, 03 May 2001 12:04:18 +0000 |
| Subject: | Bug #10626 Updated: escaping doesn't work in the replacement clause | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-53588@lists.php.net to get a copy of this message | ||
ID: 10626
Updated by: cynic
Reported By: hover@mi.ru
Old-Status: Open
Status: Bogus
Bug Type: PCRE related
PHP Version: 4.0.5
Assigned To:
Comments:
You escaped the $1000 on the PHP level, so literal $1000 was sent to PCRE, where $10 was interpreted
as a backreference, and since there aren't 10 capturing subpatterns in the pattern, you get an
empty string for $10, and the rest is taken as a literal string.
Send further questions to php-general@ (after you RTFM, of course).
Previous Comments:
---------------------------------------------------------------------------
[2001-05-03 03:04:24] hover@mi.ru
The problem is that preg_replace() ignores escaping of $nn sequence in the replacement string.
<?
$str = preg_replace("/a/", "$1000", "test ... a ... test");
echo $str;
?>
test ... 00 ... test
-----------
#!/usr/local/bin/perl -w
$_ = "test ... a ... test";
s/a/$1000/;
print;
-----------
test ... $1000 ... test
This feature leads to impossibility of passing strings like '$1000' via phplib template
variables.
PHP 4.0.4pl1, 4.0.5
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=10626&edit=2