Général
- Présentation
- Les Symboles
- Les Métacaractères
- Les Ancres et Classes
- Les options
- Constantes prédéfinies
- Equivalences
- Créer un motif
- Les POSIX
- Les PCRE
- Les Plus des PCRE
- Les Assertions Part I
- Les Assertions Part II
- Motif conditionnel
- Mysql et les regex
- Url Rewriting
- Optimisation
- Aide mémoire
Les PCRE
Les POSIX
Pratique
Linux
Spécial php
- Conseils et Astuces
- Délimiteur PCRE
- Créer une bdd
- Utiliser du BBcode
- Le binaire
- Faire un panier
- Cases à cocher
- Citations imbriquées
- Colorateur syntaxique
- Les list-box ou combo-box
- Faire un diaporama
- Isset ou empty ?
- Une légende au survol
- Site en plusieurs langues
- Requêtes dynamiques
- Gestion des smiley
- Faire un moteur de template
- Timestamp php/mysql
- Timestamp mysql
- Matcher une adresse email
- Controler des données
Les billets de fred
- Les POSIX... mise en pratique !
- Limiter l'accès à un répertoire
- Alternance de couleurs
- Magic_quotes
- Désactiver les short_tags
- Require ou include : Bench
- Cohérence dans les chaines de caractères
- "echo" : lapin ou tortue ?
- Gérer un formulaire avec plusieurs boutons
- Le formulaire a t'il été soumis ?
- J'ai décidé de grossir
- La guerre des étoiles
- La guerre des boutons
- Headers already sent
- IP, IP, IP, houra !
- Créer un itérateur avec PHP5
- On vous conduit vers la lumière
- Comment utiliser MySQL avec PHP
- Non aux booléens !
- Php.ini : dist /recommended
- Include : gouffre ou fêlure ?
- Simple comme les sessions !
- Simplifier le traitement des erreurs
- Structurez vos applications
- Franchement, t'es trop for !
- Notice: Undefined variable (ou index)
- Proscrire les variables auto déclarées
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 tableauNiveau 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écimalesId 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.
