hvle Posted August 7, 2006 Share Posted August 7, 2006 strange behavior in preg_replace:$val1 = "{BODY}";$val2 = '$453.00;now I want to replace '{BODY}' with $val2 so:echo preg_replace('/{BODY}/',$val2,$val1);will echo '3.00'where is '$45' gone?is this a bug or i am doing something wrong?thanks Link to comment https://forums.phpfreaks.com/topic/16768-preg_replace/ Share on other sites More sharing options...
zq29 Posted August 7, 2006 Share Posted August 7, 2006 the '$' symbol is a special character when working with Regular Expressions - Escape it and you should be fine.[code]<?php$val1 = "{BODY}";$val2 = '\$453.00';echo preg_replace('/{BODY}/',$val2,$val1);?>[/code] Link to comment https://forums.phpfreaks.com/topic/16768-preg_replace/#findComment-70566 Share on other sites More sharing options...
hvle Posted August 9, 2006 Author Share Posted August 9, 2006 that's right SA,but why $45 was stripped? why not $4 or $453i'm just curious.It was a bad idea to use preg_replace. I change to str_replace and it's better. Link to comment https://forums.phpfreaks.com/topic/16768-preg_replace/#findComment-71564 Share on other sites More sharing options...
effigy Posted August 9, 2006 Share Posted August 9, 2006 From the manual:[quote]Replacement may contain references of the form \\n or (since PHP 4.0.4) [b]$n[/b], with the latter form being the preferred one. Every such reference will be replaced by the text captured by the n'th parenthesized pattern. [b]n can be from 0 to 99[/b], and \\0 or $0 refers to the text matched by the whole pattern. Opening parentheses are counted from left to right (starting from 1) to obtain the number of the capturing subpattern.[/quote]Thus, your replace was looking for backreference $45. Link to comment https://forums.phpfreaks.com/topic/16768-preg_replace/#findComment-71620 Share on other sites More sharing options...
hvle Posted August 9, 2006 Author Share Posted August 9, 2006 Thank you effigy, good to know. Link to comment https://forums.phpfreaks.com/topic/16768-preg_replace/#findComment-71772 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.