English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PHP Expression Régulière (PCRE)
La fonction preg_match_all est utilisée pour exécuter une correspondance régulière globale.
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
Recherche de toutes les correspondances du pattern spécifié par l'expression régulière dans subject et affichage des résultats de correspondance sous l'ordre spécifié par le flag dans matches.
Après avoir trouvé la première correspondance, la sous-sequence continue de chercher à partir de la position de la dernière correspondance.
Explication des paramètres :
$pattern : Modèle à rechercher, sous forme de chaîne.
$subject : Chaîne d'entrée.
$matches : Tableau multidimensionnel, utilisé comme paramètre de sortie pour tous les résultats de correspondance, l'ordre du tableau est spécifié par les flags.
$flags : Peut être combiné avec les balises suivantes (attention, ne pas utiliser PREG_PATTERN_ORDER et PREG_SET_ORDER en même temps) :
PREG_PATTERN_ORDER: Les résultats sont triés de sorte que $matches[0] sauvegarde toutes les correspondances de l'expression régulière complète, $matches[1] Sauvegarde toutes les correspondances du premier sous-groupe, et ainsi de suite.
PREG_SET_ORDER: Les résultats sont triés de sorte que $matches[0] contient toutes les correspondances (y compris les sous-groupes) obtenues pour la première correspondance, $matches[1C'est un tableau contenant toutes les correspondances (y compris les sous-groupes) trouvées pour la deuxième correspondance, et ainsi de suite.
PREG_OFFSET_CAPTURE: Si ce marqueur est transmis, l'offset relatif de chaque correspondance trouvée est ajouté lors du retour.
offset: Habituellement, la recherche commence à partir du début de la chaîne cible. Le paramètre optionnel offset est utilisé pour commencer la recherche à partir de l'emplacement spécifié dans la chaîne cible (en octets).
Retourne le nombre total de correspondances complètes (peut être 0), ou FALSE si une erreur se produit.
<?php
$userinfo = "Nom: <b>PHP</b> <br> Titre: <b>Langage de programmation</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
?>
Le résultat de l'exécution suit:
Tableau ( [0] => <b>PHP</b> [1] => <b>Langage de programmation</b> )
<?php
//\\2C'est un exemple de backreference. Cela indique à pcre qu'il doit correspondre à la deuxième parenthèse circulaire de l'expression régulière (ici ([\w+))
//Résultat de la correspondance. Deux backslashes sont utilisés ici car des guillemets doubles sont utilisés.
$html = "<b>texte en gras</b><a href=howdy.html>cliquez-moi</a>";
preg_match_all("/(<([\w+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matché: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4]; "\n\n";
}
?>
Le résultat de l'exécution suit:
matché: <b>texte en gras</b> part 1: <b> part 2: b part 3: texte en gras part 4: </b> matché: <a href=howdy.html>cliquez-moi</a> part 1: <a href=howdy.html> part 2: a part 3: cliquez-moi part 4: </a>