|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-05-15 22:15 UTC] sal at stodge dot org
If you use preg_replace with the /e option from within a class you may want to call a method of the current class to perform the lookup. Intuativly a user might expect this code to work:
$whatever=preg_replace( $pattern,"$this->whatever('\\1')", $value );
That 2nd parameter is being evaluated outside the current class... In this context "$this" has no meaning outside the object, So a method like "$this->whatever{foo)" can never be evaluated directly by this command.
The function works fine if you use it according to the instructions - that is you provide it with a globally available function it will work perfectly.
To check version & config of the my offending server:
http://sharesite.stodge.org/test.php
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 06:00:01 2025 UTC |
You need to escape the '$', e.g.: $whatever = preg_replace( $pattern,"\$this->whatever('\\1')", $value );