ID: 44925
Updated by: [EMAIL PROTECTED]
Reported By: admin at ifyouwantblood dot de
Status: Assigned
Bug Type: PCRE related
PHP Version: 5.2.6
Assigned To: nlopess
New Comment:
Functions should never ever modify the input array unless designed to
do so. According to documentation, preg_grep() is not supposed to modify
the input array. So it's a bug, not BC. What exactly is the usage case
where it should modify input array?
Previous Comments:
------------------------------------------------------------------------
[2008-07-06 18:46:13] [EMAIL PROTECTED]
I don't really know what to do with this..
While I agree it shouldn't modify the original array, changing the
behavior would break BC.. Any opinions about this?
------------------------------------------------------------------------
[2008-05-06 16:00:03] admin at ifyouwantblood dot de
> PHP obviously should convert the values to string to be used in
> regex matching. Hence, i think that it should returns the string
> that was matched.
sure, internally it'll has to be converted, but i see no reason for a
change of the input array. thus preg_grep should work with a copy of the
input array...
------------------------------------------------------------------------
[2008-05-06 13:07:09] [EMAIL PROTECTED]
Well, preg_grep() != in_array()...
PHP obviously should convert the values to string to be used in regex
matching. Hence, i think that it should returns the string that was
matched.
Anyway, i'll assign to the maintainer to solve this issue.
Thanks.
------------------------------------------------------------------------
[2008-05-06 12:48:29] admin at ifyouwantblood dot de
>> 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.
>
> This is expected, the function is for matching strings.
sorry, but did you even take a look at the samples? preg_grep is a
SEARCH function, why should it change the INPUT array?
------------------------------------------------------------------------
[2008-05-06 10:57:14] [EMAIL PROTECTED]
> 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.
This is expected, the function is for matching strings.
> 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)
Exactly, preg_grep() is intended for works only with arrays.
> 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?
The PHP converts for the literal string 'Array'.
That can be viewed with: var_dump(preg_grep('//', array(array())));
Thanks.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/44925
--
Edit this bug report at http://bugs.php.net/?id=44925&edit=1