PHP 5.4.36 Released

preg_grep

(PHP 4, PHP 5)

preg_grepRetourne un tableau avec les résultats de la recherche

Description

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

preg_grep() retourne un tableau qui contient les éléments de input qui satisfont le masque pattern.

Liste de paramètres

pattern

Le motif à chercher, sous la forme d'une chaîne de caractères.

input

Le tableau d'entrée.

flags

Si cette option vaut PREG_GREP_INVERT, cette fonction retourne les éléments du tableau input qui ne correspondent pas au motif pattern.

Valeurs de retour

Retourne un tableau indexé, en utilisant les clés du tableau input d'entrée.

Exemples

Exemple #1 Exemple avec preg_grep()

<?php
// Recherche les nombres à virgule flottante dans le tableau
$fl_array preg_grep("/^(\d+)?\.\d+$/"$array);
?>

Voir aussi

add a note add a note

User Contributed Notes 4 notes

up
11
Daniel Klein
1 year ago
A shorter way to run a match on the array's keys rather than the values:

<?php
function preg_grep_keys($pattern, $input, $flags = 0) {
    return
array_intersect_key($input, array_flip(preg_grep($pattern, array_keys($input), $flags)));
}
?>
up
7
brian at cristina dot org
6 years ago
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
up
2
keithbluhm at gmail dot com
4 years ago
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;
}

?>
up
-2
vickyssj7 at gmail dot com
2 months ago
A very simple example to match multiple "."(dot) in an array value:-

<?php

     $array
= array("23.32","22","12.009","23.43.43");
    
print_r(preg_grep("/^(\d+)?\.\d+\.\d+$/",$array));

?>
To Top