Maison > Article > développement back-end > php : Comparaison des exemples d'utilisation de preg_match et preg_match_all
Application des expressions régulières en PHP
Dans les applications PHP, les expressions régulières sont principalement utilisées pour :
• Correspondance régulière : Faites correspondre le contenu correspondant selon l'expression régulière
• Remplacement régulier : Faites correspondre le contenu selon l'expression régulière et remplacez
• Split régulier : Divisez la chaîne selon l'expression régulière
Il existe deux types de fonctions d'expression régulière en PHP, l'une est la fonction d'expression régulière compatible Perl et l'autre est la fonction d'expression régulière étendue POSIX. Il n'y a pas beaucoup de différence entre les deux et il est recommandé d'utiliser des fonctions d'expression régulière compatibles Perl, donc ce qui suit utilise des fonctions d'expression régulière compatibles Perl comme exemples.
Délimiteur
Fonction d'expression régulière du mode de compatibilité Perl, l'expression régulière doit être écrite dans le délimiteur. Tout caractère qui n'est pas une lettre, un chiffre ou une barre oblique inverse () peut être utilisé comme délimiteur. Habituellement, nous utilisons / comme délimiteur. Voir les exemples ci-dessous pour une utilisation spécifique.
Conseils
Bien que les expressions régulières soient très puissantes, si cela peut être fait avec des fonctions de traitement de chaînes ordinaires, essayez de ne pas utiliser de fonctions d'expression régulière, car beaucoup d'expressions régulières seront très inefficaces. À propos des fonctions de traitement de chaînes ordinaires. La fonction
preg_match()
preg_match() est utilisée pour la correspondance d'expressions régulières. Elle renvoie 1 avec succès, sinon elle renvoie 0.
Syntaxe :
int preg_match (modèle de chaîne, sujet de chaîne [, correspondances de tableau])
Description du paramètre :
Paramètres | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
modèle | Expression régulière | ||||||||
sujet | Besoin de correspondre à l'objet récupéré | ||||||||
correspondances | Facultatif, Array
| tr>
Exemple 1 :
<?php if(preg_match("/php/i", "PHP is the web scripting language of choice.", $matches)){ print "A match was found:". $matches[0]; } else { print "A match was not found."; } ?>
Sortie du navigateur :
A match was found: PHP
Dans Dans cet exemple, en raison de l'utilisation du modificateur i, php sera mis en correspondance dans le texte sans tenir compte de la casse.
Conseils
preg_match() cessera de correspondre après la première correspondance réussie. Si vous souhaitez faire correspondre tous les résultats, c'est-à-dire rechercher jusqu'à la fin du sujet, vous devez utiliser preg_match_all. () fonction.
Exemple 2, obtenez le nom de domaine hôte à partir d'une URL :
<?php // 从 URL 中取得主机名 preg_match("/^(http://)?([^/]+)/i","http://www.php.cn/index.html", $matches); $host = $matches[2]; // 从主机名中取得后面两段 preg_match("/[^./]+.[^./]+$/", $host, $matches); echo "域名为:{$matches[0]}"; ?>
Sortie du navigateur :
Le nom de domaine est : php.cn
preg_match_all()
la fonction preg_match_all() est utilisée pour la correspondance globale des expressions. Renvoie le nombre de fois où le modèle entier a été mis en correspondance en cas de succès (éventuellement zéro), ou FALSE en cas d'erreur.
Syntaxe :
int preg_match_all (modèle de chaîne, sujet de chaîne, correspondances de tableau [, drapeaux int])
Description du paramètre :
参数 | 说明 |
---|---|
pattern | 正则表达式 |
subject | 需要匹配检索的对象 |
matches | 存储匹配结果的数组 |
flags |
可选,指定匹配结果放入 matches 中的顺序,可供选择的标记有:
|
PREG_SET_ORDER : trier les results Soit $matches[0] le tableau du premier ensemble de correspondances, $matches[1] le tableau du deuxième ensemble de correspondances, et ainsi de suite
<?php $str = "<pre class="brush:php;toolbar:false">学习php是一件快乐的事。
所有的phper需要共同努力!"; $kw = "php"; preg_match_all('/
([sS]*?)/',$str,$mat); for($i=0;$i
L'exemple suivant montre l'affichage de tous mots-clés (php) dans les balises e03b848252eb9375d56be284e690e873bc5574f69a0cba105bc93bd3dc13c4ec dans le texte en rouge.
Caractères chinois correspondants réguliers Les caractères chinois correspondants réguliers sont légèrement différents selon l'encodage de la page :
<?php $str = "学习php是一件快乐的事。"; preg_match_all("/[x80-xff]+/", $str, $match); //UTF-8 使用: //preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match); print_r($match); ?>•Encodage GBK/GB2312 : [x80-xff>]+ ou [xa1-xff]+
•Encodage UTF-8 : [x{4e00}-x{9fa5}]+/u
Exemple :Array ( [0] => Array ( [0] => 学习 [1] => 是一件快乐的事。 ) )
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!