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