Run a match on the array's keys rather than the values:
<?php
function preg_grep_keys( $pattern, $input, $flags = 0 )
{
$keys = preg_grep( $pattern, array_keys( $input ), $flags );
$vals = array();
foreach ( $keys as $key )
{
$vals[$key] = $input[$key];
}
return $vals;
}
?>
preg_grep
(PHP 4, PHP 5)
preg_grep — Return array entries that match the pattern
Opis
Returns the array consisting of the elements of the input array that match the given pattern.
Parametry
- pattern
-
The pattern to search for, as a string.
- input
-
The input array.
- flags
-
If set to PREG_GREP_INVERT, this function returns the elements of the input array that do not match the given pattern.
Zwracane wartości
Returns an array indexed using the keys from the input array.
Rejestr zmian
| Wersja | Opis |
|---|---|
| 4.2.0 | The flags parameter was added. |
| 4.0.4 |
Prior to this version, the returned array was indexed regardless of the keys of the input array. If you want to reproduce this old behavior, use array_values() on the returned array to reindex the values. |
Przykłady
Przykład #1 preg_grep() example
<?php
// return all array elements
// containing floating point numbers
$fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);
?>
Zobacz też:
- PCRE Patterns
- preg_match_all() - Perform a global regular expression match
- preg_filter() - Perform a regular expression search and replace
- preg_last_error() - Returns the error code of the last PCRE regex execution
<?php
/**
* Return the element key for a found pattern in an array
*
* @param String pattern
* @param Array input
* @return mixed
*/
function preg_array_key( $sPattern, $aInput ){
return key( preg_grep( $sPattern, $aInput ) );
}
?>
I don't see it mentioned here but you can invert your match to only return array entries where the search values IS NOT found. The format for it is...
<?php
$nomatch = preg_grep("/{$keyword}/i",$array,PREG_GREP_INVERT);
?>
Notice the PREG_GREP_INVERT.
That will result in an array ($nomatch) that contains all entries of $array where $keyword IS NOT found.
Hope that helps!
-b
