ID: 10626
User Update by: [EMAIL PROTECTED]
Status: Bogus
Bug Type: PCRE related
Description: escaping doesn't work in the replacement clause

Thanks for educating me and sorry for waisting your time.
Though, phplib template.inc needs to be changed to work with such variables.

Something like this:

$tempvars = preg_replace("/\\$/", "\\\\\$", $this->varvals);

But it's a phplib's, not PHP thing. Thanks.

Previous Comments:
---------------------------------------------------------------------------

[2001-05-03 08:04:17] [EMAIL PROTECTED]
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).

---------------------------------------------------------------------------

[2001-05-03 03:04:24] [EMAIL PROTECTED]
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

---------------------------------------------------------------------------


Full Bug description available at: http://bugs.php.net/?id=10626


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to