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_match_all (depuis php3)
La syntaxe :preg_match_all (motif de chaîne, chaîne sujet, tableau résultat, paramètre optionnel);
preg_match_all renvoie dans un tableau toutes les occurrences du motif trouvé dans la chaîne sujet. Un ordre peut être envoyé par le paramètre optionnel
Après avoir trouvé un premier résultat, la recherche continue jusqu'à la fin de la chaîne.
order peut prendre une des deux valeurs suivantes (notez bien qu'il est incohérent d'utiliser PREG_PATTERN_ORDER avec PREG_SET_ORDER ) :
PREG_PATTERN_ORDER
L'ordre est tel que $matches[0] est un tableau qui contient les résultats qui satisfont le masque complet
$matches[1] est un tableau qui contient les résultats qui satisfont la première parenthèse capturante, etc..
Exemples avec preg_match_all
Exemple 1
Extraire des N° de téléphone d'une chaîneNiveau de compréhension : facile
$chaine="Bonjour, merci de contacter le 01-99-99-55.55 ou au 0033 1 75-75-75-75
ou encore au 0495/999.999 ou même au 0032 99.99.99.99 dès que possible";
$motif='`(\d+\s?[./-]?)+`';
preg_match_all($motif,$chaine,$out);
$nb=count($out[0]);
for($i=0;$i<$nb;$i++)
{
echo$out[0][$i].'
';
}
?>
Explication :
Voiçi un exemple avec preg_match_all permettant d'extraire une série de N° de téléphones placés dans une chaîne de texte.
preg_match_all trouve la première occurrence et recommence jusqu'au bout de la chaîne.
Le motif tient compte des séparateurs tels que le point . le tiret - et le slash /
Le motif :
- on prend en compte les caractères numériques avec \d
- \s? signifie que les chiffres peuvent être suivi d'un espace.(facultatif)
- [./-]? ceci autorise un séparateur entre les chiffres. (facultatif)
Exemple 2
Extraire des liens d'une chaîne (ou d'une page)Niveau de compréhension : facile
$chaine='Ceci est la page d\'un site sur les Expressions régulières que j'ai trouvé sur Google.be et que placé dans une chaine avec file_get_contents()';
$motif='`[^<]+`';
preg_match_all($motif,$chaine,$out);
$count=count($out[0]);
for($i=0;$i<$count;$i++)
{
echo$out[0][$i],'
';
}
?>
Explication :
Exemple d'utilisation de preg_match_all permettant de récupérer des lien dans une chaîne.
En utilisant file_get_contents() qui place le contenu d'une page dans une chaîne, on peut matcher tous les liens contenu par exemple.
Exemple 3
Extraire des images d'un balisage perso (bbcode)Niveau de compréhension : facile
<?php
$ch='texte [image]image1[/image] texte [image]image2[/image] texte [image]image3[/image] texte';
preg_match_all('`\[image]([^[]+)\[/image]`',$ch,$out);
echo '<pre>';
print_r($out);
echo '</pre>';
?>
Explication :
Aucune, suffit de regarder l'affichage obtenu
Array
(
[0] => Array
(
[0] => [image]image1[/image]
[1] => [image]image2[/image]
[2] => [image]image3[/image]
)
[1] => Array
(
[0] => image1
[1] => image2
[2] => image3
)
)
