Bug #10668 Updated: preg_replace backquote failure

From: Date: Fri, 04 May 2001 19:17:51 +0000
Subject: Bug #10668 Updated: preg_replace backquote failure
Groups: php.dev 
Request: Send a blank email to php-dev+get-53934@lists.php.net to get a copy of this message
ID: 10668 Updated by: andrei Reported By: smoonen@andstuff.org Status: Analyzed Bug Type: PCRE related PHP Version: 4.0.5 Assigned To: Comments: Oops, \\1 instead of \1. Previous Comments: --------------------------------------------------------------------------- [2001-05-04 15:17:15] andrei@php.net Ok, I made a little mistake, use "f('\\1')" rather than "f('1')". --------------------------------------------------------------------------- [2001-05-04 13:59:27] smoonen@andstuff.org Oddly, I get the following error: Warning: Unexpected character in input: '' (ASCII=92) state=1 in /home/groups/t/ta/tavi/htdocs/playground/test.php(4) : regexp code on line 1 Parse error: parse error in /home/groups/t/ta/tavi/htdocs/playground/test.php(4) : regexp code on line 1 Fatal error: Failed evaluating code: f(''\\''') in /home/groups/t/ta/tavi/htdocs/playground/test.php on line 4 PHP compile options may be seen at: http://tavi.sourceforge.net/playground/phpinfo.php --------------------------------------------------------------------------- [2001-05-04 12:58:12] andrei@php.net Can you explain why you think it fails? The following sample (slightly modified from yours to dump the $s parameter to function): $str = "abc'\\''def"; function f($s) { var_dump($s); return "x"; } print preg_replace("/c(.*)d/e", "f('\1')", $str); outputs: string(5) "'\''" abxef As it should. --------------------------------------------------------------------------- [2001-05-04 11:44:19] smoonen@andstuff.org The following code succeeds on PHP 4.03 and PHP 4.04pl1, but fails on PHP 4.05: $str = "abc'\\''def"; function f($s) { return "x"; } print preg_replace("/c(.*)d/e", "f('\1')", $str, -1); This seems to expose *two* underlying bugs: 1) There appears to be some problem in the regex state machine 2) There is a definite problem with the replacement of the backreference with its corresponding string. --------------------------------------------------------------------------- ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=10668&edit=2

« previous php.dev (#53934) next »