Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

La fonction preg_grep


La syntaxe :
preg_grep (motif de chaîne, tableau sujet, option);

preg_grep retourne dans un tableau les éléments extraits d'un autre tableau correspondant ou non au motif (voir option PREG_GREP_INVERT).

Depuis PHP 4.0.4, le tableau retourné par preg_grep est indexé en utilisant les clés issues du tableau input . Si ces clés sont inutiles, utilisez la fonction array_values sur le tableau retourné par preg_grep pour obtenir le comportement traditionnel.
L'élément optionnel PREG_GREP_INVERT exclue les éléments qui correspondent au masque.

La syntaxe suivante avec l'argument array_values :
$tablo=array_values(preg_greg($motif,$tablo));
Si cet argument est utilisé, les éléments extraits du tableau initial seront réindexés dans le tableau de sortie créé par preg_grep.

Exemples avec preg_grep

Exemple 1

Extraire des valeurs décimales d'un tableau
Niveau de compréhension : facile

<?php

$tablo=array('1','2.25','3','4.75','6','7.33','9','11','14.45','19');
$trouve=array_values(preg_grep('`^\d+\.\d+$`',$tablo));
$nb=count($trouve);
for($i=0;$i<=$nb;$i++){
echo $trouve[$i].'<br/>';
}
// cet exemple va afficher : 2.25 - 4.75 - 7.33 - 14.45
?>

Explication :
La fonction preg_grep permet d'extraire des éléments d'un tableau suivant le masque défini.
Si l'argument array_values est employé, les éléments extraits seront réindexés dans le nouveau tableau.

Exemple 2

Toujours nos valeurs décimales
Id du code : 20
Niveau de compréhension : facile

<?php

$tablo=array('1','2.25','3','4.75','6','7.33','9','11','14.45','19');
$trouve=array_values(preg_grep('`^\d+\.\d+$`',$tablo, PREG_GREP_INVERT));
$nb=count($trouve);
for($i=0;$i<=$nb;$i++){
echo $trouve[$i].'<br/>';
}

// avec cette option l'affichage donnera : 1 - 3 - 6 - 9 - 11 - 19

?>

Explication :
Toujours grâce à notre fonction preg_grep et le même masque, on va récupérer les valeurs qui ne correspondent pas au masque soit les valeurs entières.

Pour cela, on utiliser un troisièeme argument optionnel qui est :
PREG_GREP_INVERT

Exemple 3

Extraire tous les mots de 6 lettres dans un tableau et les placer dans un autre.
Niveau de compréhension : facile

<?php
$tablo=array('Pommes','poire','banane','kiwi','orange','ananas','noix','cerise','framboise','raisins');
$nb=count($tablo);

$trouve=array_values(preg_grep('`^\w{6}$`',$tablo));
$nb=count($trouve);

for($i=0;$i<$nb;$i++)
{
echo $trouve1[$i].'<br />';
}
?>

Explication :
On vérifie dans $tablo, toutes les valeurs qui ont exactement 6 lettres, on les extrait pour les placer dans un autre tableau.
ADAM Benjamin 2008 | Admin