downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

preg_last_error> <preg_filter
[edit] Last updated: Fri, 03 Feb 2012

view this page in

preg_grep

(PHP 4, PHP 5)

preg_grepReturn array entries that match the pattern

Description

array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )

Returns the array consisting of the elements of the input array that match the given pattern.

Parameters

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.

Return Values

Returns an array indexed using the keys from the input array.

Changelog

Version Description
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.

Examples

Example #1 preg_grep() example

<?php
// return all array elements
// containing floating point numbers
$fl_array preg_grep("/^(\d+)?\.\d+$/"$array);
?>

See Also



preg_last_error> <preg_filter
[edit] Last updated: Fri, 03 Feb 2012
 
add a note add a note User Contributed Notes preg_grep
keithbluhm at gmail dot com 21-Jan-2010 03:56
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;
}

?>
pete dakin at aargh dot doh! 20-Nov-2008 07:24
<?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 ) );
}
?>
brian at cristina dot org 02-Sep-2008 01:31
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

 
show source | credits | sitemap | contact | advertising | mirror sites