#47235 [Opn->Csd]: preg_replace_callback calling a __call returns incorrect values

From: Date: Thu, 29 Jan 2009 02:34:58 +0000
Subject: #47235 [Opn->Csd]: preg_replace_callback calling a __call returns incorrect values
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-133285@lists.php.net to get a copy of this message
ID: 47235 User updated by: dmsuperman at gmail dot com Reported By: dmsuperman at gmail dot com -Status: Open +Status: Closed Bug Type: *Regular Expressions Operating System: Linux Ubuntu PHP Version: 5.2.8 New Comment: I'm an idiot, I forgot __call recieved an _array_ of arguments. Ignore this, sorry guys Previous Comments: ------------------------------------------------------------------------ [2009-01-29 02:26:33] dmsuperman at gmail dot com Description: ------------ When combining the use of preg_replace_callback with the __call automagic function, the value returned to the automagic __call function differs from the expected value. It's always wrapped in a single-element single-dimensional array (from what I can tell). The example code with varied results can describe what I mean perfectly. This happens in 5.2.6 and 5.2.8 (I just downloaded the latest version before testing this bug to be sure). Reproduce code: --------------- <?php class my { function doit(){ preg_replace_callback("/(.+)/", "var_dump", "aa"); preg_replace_callback("/(.+)/", array($this, "output"), "aa"); preg_replace_callback("/(.+)/", array($this, "somefunc"), "aa"); } function output($arg){ var_dump($arg); } function __call($func, $arg){ var_dump($arg); } } $obj = new my(); $obj->doit(); ?> Expected result: ---------------- array(2) { [0]=> string(2) "aa" [1]=> string(2) "aa" } array(2) { [0]=> string(2) "aa" [1]=> string(2) "aa" } array(2) { [0]=> string(2) "aa" [1]=> string(2) "aa" } Actual result: -------------- array(2) { [0]=> string(2) "aa" [1]=> string(2) "aa" } array(2) { [0]=> string(2) "aa" [1]=> string(2) "aa" } array(1) { [0]=> array(2) { [0]=> string(2) "aa" [1]=> string(2) "aa" } } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47235&edit=1

« previous php.bugs (#133285) next »