PHP :: Bug #44925 :: preg_grep and array index
| Bug #44925 | preg_grep and array index - follow up on #44191 | ||||
|---|---|---|---|---|---|
| Submitted: | 2008-05-06 09:49 UTC | Modified: | 2008-08-14 14:39 UTC | ||
| From: | admin at ifyouwantblood dot de | Assigned: | nlopess (profile) | ||
| Status: | Closed | Package: | PCRE related | ||
| PHP Version: | 5.2.6 | OS: | |||
| Private report: | No | CVE-ID: | None | ||
[2008-05-06 09:49 UTC] admin at ifyouwantblood dot de
Description: ------------ this is a follow up on bug #44191. that was fixed, but everything inside the array is now converted to a string. as i understand it, the search array shouldn't change at all, so i think this is a bug. please note that with objects without a __toString() method, this of course leads to a fatal error. another thing is, preg_grep issues a warning if you give it an object instead of converting the object to an array (like other function like array_flip() do) addtionally a question: how should preg_grep react on multi-dimensional arrays anyways? convert them to a string and try to match the pattern? go through every level and return a multi-dimensional array? issue a warning? Reproduce code: --------------- $array=Array("1",2,3,1.1,FALSE,NULL,Array()); var_dump($array); echo "<br>\n"; var_dump(preg_grep('/asdf/',$array)); echo "<br>\n"; var_dump($array); echo "<br>\n"; var_dump(preg_grep('/asdf/',new stdClass)); echo "<br>\n"; Expected result: ---------------- array(8) { [0]=> string(1) "1" [1]=> int(2) [2]=> int(3) [3]=> float(1.1) [4]=> bool(false) [5]=> NULL [6]=> array(0) { } [7]=> object(stdClass)#8 (0) { } } array(0) { } array(8) { [0]=> string(1) "1" [1]=> int(2) [2]=> int(3) [3]=> float(1.1) [4]=> bool(false) [5]=> NULL [6]=> array(0) { } } array(0) { } Actual result: -------------- array(7) { [0]=> string(1) "1" [1]=> int(2) [2]=> int(3) [3]=> float(1.1) [4]=> bool(false) [5]=> NULL [6]=> array(0) { } } Notice: Array to string conversion in D:\_projects\preg_grep.php array(0) { } array(7) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(3) "1.1" [4]=> string(0) "" [5]=> string(0) "" [6]=> string(5) "Array" } Warning: preg_grep() expects parameter 2 to be array, object given in D:\_projects\cms\admin\data\classes\class.article.php on line 13 NULL
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2008-05-06 10:57 UTC] felipe@php.net
[2008-05-06 12:48 UTC] admin at ifyouwantblood dot de
[2008-05-06 13:07 UTC] felipe@php.net
[2008-05-06 16:00 UTC] admin at ifyouwantblood dot de
[2008-07-06 18:46 UTC] nlopess@php.net
[2008-07-13 16:18 UTC] jani@php.net
[2008-07-17 15:46 UTC] nlopess@php.net
[2008-08-14 14:39 UTC] nlopess@php.net