ID: 8986
Updated by: andrei
Old-Status: Open
Status: Closed
Bug Type: PCRE related
Assigned To: 

This is documented in the online manual. Please use \\ in front of $ to escape it 
(latest CVS).

Previous Comments:

[2001-01-29 13:05:20] [EMAIL PROTECTED]
By the way, no variable replacement is taking place with the "$10.00". It fails if the 
script is:

$test = "hello there";
$output = preg_replace('/hello/','$10.00',$test);
print $output;

as well. The input that I am passing to the function is posted form data. Which 
contains valid text up to this function call, afterwhich the replaced text exhibits 
the problem described above.



[2001-01-29 13:00:55] [EMAIL PROTECTED]
In php_pcre.c line 630, the dollar sign '$' is also used as in indicator for a 
backreference, which is undocumented. This breaks any replacement string that contains 
the "$dd" pattern where "dd" are numerical digits. For example:

$test = "hello there";
$output = preg_replace("/hello/","$10.00",$test);
print $output;

results in the output:

.00 there

The "$10" is taken as a back reference and resolves to NULL leaving the ".00". 

In my application, I need to merge user generated text that may contain dollar signs. 
I am using preg_replace and doing multiple keyword,value substitutions using arrays.

My only workaround right now is to perform a preliminary preg_replace and insert a 
space after each dollar sign.


Full Bug description available at:

PHP Development Mailing List <>
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