English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel PHP de base

Tutoriel PHP avancé

PHP & MySQL

Manuel de référence PHP

Utilisation et exemple de la fonction preg_match() en PHP

PHP Expression Régulière (PCRE)

La fonction preg_match() est utilisée pour effectuer une correspondance avec une expression régulière.

Syntaxe

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Recherche une correspondance entre le sujet et le schéma de recherche donné en expression régulière.

Description des paramètres :

  • $pattern : Modèle à rechercher, sous forme de chaîne.

  • $subject : Chaîne d'entrée.

  • $matches : Si le paramètre matches est fourni, il est rempli des résultats de la recherche. $matches[0] contiendra le texte correspondant au schéma complet, $matches[1] contiendra le texte correspondant au premier sous-groupe capturé, et ainsi de suite.

  • $flags : flags peut être configuré avec les valeurs des marqueurs suivants :

  • PREG_OFFSET_CAPTURE: Si ce marqueur est passé, pour chaque correspondance apparue, un offset de chaîne (par rapport à la chaîne cible) est ajouté lors du retour. Note : cela change le tableau rempli dans le paramètre matches, en le rendant chaque élément une liste composée de1Un élément est l'offset de la chaîne correspondante dans la chaîne cible subject.

  • offset: généralement, la recherche commence à la position de début de la chaîne cible. Le paramètre optionnel offset est utilisé pour spécifier un début inconnu de la chaîne cible (en unités d'octets).

Retourne la valeur

Retourne le nombre de correspondances du modèle. Sa valeur sera 0 (pas de correspondance) ou 1 D'une autre part, preg_match() arrête la recherche après la première correspondance. preg_match_all() est différent, il continue de rechercher le sujet jusqu'à la fin. Si une erreur se produit, preg_match() renvoie FALSE.

Exemple en ligne

<?php
//Le marqueur "i" après le délimiteur de modèle indique qu'il s'agit d'une recherche insensible à la casse
if (preg_match("/php/i", "PHP est le langage de scriptage Web préféré.")) {
    echo "Chaîne correspondante trouvée php.\n";
} else {
    echo "Aucune chaîne correspondante trouvée php.\n";
}
?>

Les résultats de l'exécution sont indiqués ci-dessous :

Chaîne correspondante trouvée php.

<?php
/* Le marqueur \b d'un mot indique une bordure de mot, donc seules les mots indépendants "web" seront correspondants, sans correspondre
 * Partie d'un mot comme "webbing" ou "cobweb" */
if (preg_match("/\bweb\b/i", "PHP est le langage de scriptage Web préféré.")) {
    echo "Chaîne correspondante trouvée.\n";
} else {
    echo "Aucune chaîne correspondante trouvée.\n";
}
if (preg_match("/\bweb\b/i", "PHP est le langage de scriptage Web préféré.")) {
    echo "Chaîne correspondante trouvée.\n";
} else {
    echo "Aucune chaîne correspondante trouvée.\n";
}
?>

Les résultats de l'exécution sont indiqués ci-dessous :

Chaîne correspondante trouvée.
Aucune chaîne correspondante trouvée.

<?php
// Obtenir le nom d'hôte à partir de l'URL
preg_match('@^(?:http://)?([^/]+)@i',
    "http://fr.oldtoolbag.com/index.html", $matches);
$host = $matches[1;
// Obtenir les deux parties suivantes du nom d'hôte
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "nom de domaine : {$matches[0]}\n";
?>

Les résultats de l'exécution sont indiqués ci-dessous :

nom de domaine : oldtoolbag.com

<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
/* Voici un exemple dans php 5.2.2(pcre 7.0) ou une version plus récente, cependant, pour la compatibilité ascendante, la méthode ci-dessus est recommandée. */
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>

Les résultats de l'exécution sont indiqués ci-dessous :

Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

PHP Expression Régulière (PCRE)