Rechercher une fonction PHP

preg_match_all

(PHP 3 >= 3.0.9, PHP 4, PHP 5)

preg_match_all -- Expression rationnelle globale

Description

int preg_match_all ( string pattern, string subject, array &matches [, int flags [, int offset]] )

preg_match_all() analyse subject pour trouver l'expression pattern et met les résultats dans matches, dans l'ordre spécifié par flags.

Après avoir trouvé un premier résultat, la recherche continue jusqu'à la fin de la chaîne.

flags 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.

Exemple 1. Exemple avec preg_match_all() et PREG_PATTERN_ORDER

<?php
preg_match_all
("|<[^>]+>(.*)</[^>]+>|U",
                
"<strong>exemple : </strong><div align=\"left\">un test</div>",
                
$out,
                
PREG_PATTERN_ORDER);

echo
$out[0][0] . ', ' . $out[0][1] . "\n";
echo
$out[1][0] . ', ' . $out[1][1] . "\n";
?>

L'exemple ci-dessus va afficher :

<strong>exemple : </strong>, <div align="left">un test</div>
exemple : , un test

Ainsi, $out[0] est un tableau qui contient les résultats qui satisfont le masque complet, et $out[1] est un tableau qui contient les balises entre > et <.

PREG_SET_ORDER

Les résultats sont classés de telle façon que $matches[0] contient la première série de résultats, $matches[1] contient la deuxième, etc.

Exemple 2. Exemple avec preg_match_all() et PREG_SET_ORDER

<?php
preg_match_all
("|<[^>]+>(.*)</[^>]+>|U",
                
"<strong>exemple : </strong><div align=\"left\">un test</div>",
                
$out,
                
PREG_SET_ORDER);
echo
$out[0][0] . ', ' . $out[0][1] . "\n";
echo
$out[1][0] . ', ' . $out[1][1] . "\n";
?>

L'exemple ci-dessus va afficher :

<strong>exemple : </strong>, exemple : 
<div align="left">un test</div>, un test

Dans ce cas, $matches[0] est la première série de résultat, et $matches[0][0] contient le texte qui satisfait le masque complet, $matches[0][1] contient le texte de la première parenthèse capturante, etc. De même, $matches[1] contient le texte qui satisfait le masque complet, etc.

PREG_OFFSET_CAPTURE

Si cette option est activée, toutes les sous-chaînes qui satisfont le masque seront aussi identifiées par leur offset. Notez que cela modifie le format de la valeur retournée, puisque chaque élément de réponse devient un tableau contenant la sous-chaîne résultat, à l'index 0 dans la chaîne subject constant 1. Cette option a été ajoutée en PHP 4.3.0 .

Si order est omis, PREG_PATTERN_ORDER est utilisé par défaut.

Normalement, la recherche commence au début de la chaîne subject. Le paramètre optionnel offset peut être utilisé pour spécifier une position pour le début de la recherche. Le paramètre offset a été introduit depuis la version 4.3.3 de PHP.

Note : Utiliser le paramètre offset ne revient pas à passer substr($subject, $offset) à preg_match_all() à la place de la chaîne subject, car pattern peut contenir des assertions comme ^, $ ou (?<=x). Lisez la documentation sur la fonction preg_match() pour des exemples.

preg_match_all() retourne le nombre de résultats qui satisfont le masque complet, ou FALSE en cas d'échec ou d'erreur.

Exemple 3. Extraction de tous les numéros de téléphone d'un texte

<?php
preg_match_all
("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
              
"Appelez 555-1212 ou 1-800-555-1212", $phones);
?>

Exemple 4. Recherche les couples de balises HTML (gourmand)

<?php
// Cet exemple utilise les références arrières (\\2).
// Elles indiquent à l'analyseur qu'il doit trouver quelque chose qu'il
// a déjà repéré un peu plus tôt
// le nombre 2 indique que c'est le deuxième jeu de parenthèses
// capturante qui doit être utilisé (ici, ([\w]+)).
// L'antislash est nécessaire ici, car la chaîne est entre guillemets doubles

$html = '<strong>Texte en gras</strong><a href="php-rf-salut.html">clique moi</a>';

preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);

foreach (
$matches as $val) {
   echo
"matched: " . $val[0] . "\n";
   echo
"part 1: " . $val[1] . "\n";
   echo
"part 2: " . $val[3] . "\n";
   echo
"part 3: " . $val[4] . "\n\n";
}
?>

L'exemple ci-dessus va afficher :

Trouvé : <strong>Texte en gras</strong>
partie 1 : <strong>
partie 2 : Texte en gras
partie 3 : </strong>

Trouvé : <a href="php-rf-salut.html">clique moi</a>
partie 1 : <a href="php-rf-salut.html">
partie 2 : clique moi
partie 3 : </a>

Voir aussi preg_match(), preg_replace() et preg_split().



Rechercher une fonction PHP

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

8 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Références

  1. Consulter le document html Langue du document: fr Manuel PHP : http://be2.php.net, preg_match_all

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-524
Document créé le 13/07/06 19:31, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/php-rf-function.preg-match-all.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,30 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Windows ne demande jamais à Chuck Norris d'envoyer le rapport d'erreur. Bill Gates vient le chercher lui même, avec toutes ses excuses.

Anonyme [Chuck Norris fact]
 
l'infobrol
Nous sommes le Dimanche 03 Juin 2012, 01:31, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)