preg_grep

(PHP 4, PHP 5)

preg_grepDevuelve entradas de matriz que coinciden con el patrón

Descripción

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

Devuelve la matriz consistente en los elementos de la matriz input que coinciden con pattern.

Parámetros

pattern

El patrón de búsqueda, como cadena.

input

La matriz de entrada.

flags

Si se establece a PREG_GREP_INVERT, esta función devuelve los elementos de la matriz de entrada que no coinciden con pattern.

Valores devueltos

Devuelve una matriz indexada usando las claves de la matriz input.

Ejemplos

Ejemplo #1 Ejemplo de preg_grep()

<?php
// devuelve todos los elementos de la matriz
// que contienen números de coma (punto) flotante
$matriz_fl preg_grep("/^(\d+)?\.\d+$/"$matriz);
?>

Ver también

add a note add a note

User Contributed Notes 4 notes

up
10
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
9
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
1
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
-1
vickyssj7 at gmail dot com
20 days 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