Maison >développement back-end >tutoriel php >En savoir plus sur les expressions régulières php

En savoir plus sur les expressions régulières php

墨辰丷
墨辰丷original
2018-06-06 09:57:461155parcourir

Cet article présente principalement une compréhension approfondie des expressions régulières PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Partage d'expression régulière php :

1. Créer une expression régulière

$regex = '/d/i';
est quelque peu similaire à la première méthode en JavaScript, sauf que le mot ici est une chaîne.

2. Les caractères spéciaux dans les expressions régulières

Les caractères spéciaux sont : + [ ^ ] $ (. ) { } = ! 6d267e5fab17ea8bc578f9e7e5e1570b : -

3. 8 méthodes, preg_match et preg_match_all, preg_replace et preg_replace_callback, preg_grep, preg_split, preg_last_error et preg_quote.

preg_match :

Effectue une correspondance d'expression régulière

Renvoie le nombre de modèles correspondants . Sa valeur sera 0 fois (pas de correspondance) ou 1 fois, car preg_match() cessera de rechercher

après la première correspondance de

.

L'exemple de code ci-dessus ajoute le paramètre "PREG_OFFSET_CAPTURE". Dans ce cas, il y aura un numéro de décalage supplémentaire dans $matches. Par exemple, "2" ci-dessous
$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

Renvoie le nombre de correspondances complètes (éventuellement 0), ou FALSE si une erreur se produit.

Dans le code suivant, $subject et $pattern sont les mêmes que ci-dessus. La seule différence est que preg_match est remplacé par preg_match_all.

Le nombre renvoyé est 2, correspondant deux fois Regardez l'entrée dans le tableau $matches, il y en a deux. Un de plus que ce qui précède.

preg_replace :

Effectue une recherche et un remplacement d'expression régulière
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

Si le sujet est un tableau, preg_replace() renvoie un tableau, sinon il renvoie une chaîne.

Si une correspondance est trouvée, le sujet remplacé est renvoyé, sinon le sujet inchangé est renvoyé. Si une erreur se produit, NULL est renvoyé.

Dans le code, $subject est un tableau avec deux ensembles de chaînes. Ensuite, plusieurs nombres sont remplacés par un "Z" majuscule.

preg_replace_callback :


Effectue une recherche d'expression régulière et utilise un "rappel" pour le remplacement

$subject = array("dd133aa2", "kk1ff3");
$pattern = '/\d+/';
$result = preg_replace($pattern, 'Z', $subject);
print_r($result);

Le comportement de cette fonction est de spécifier un rappel au lieu d'un remplacement . Le calcul de la chaîne de remplacement est par ailleurs équivalent à preg_replace(), y compris le résultat renvoyé.

Le code suivant est également remplacé par un "Z" majuscule. Le contenu de $matches dans la fonction de rappel est la partie commentée du code. La première fois est 133 et la deuxième fois est 2.

preg_grep :

Renvoie les entrées du tableau qui correspondent au modèle

renvoie un tableau
$subject = "dd133aa2";
$pattern = '/\d+/';
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return 'Z';
   }, $subject);
print_r($result);
indexé par

en utilisant la clé dans l'entrée.

Dans l'exemple de code ci-dessous, j'ai ajouté "ddsdfd" au tableau $subject, qui ne contient pas de chiffres. Lors de la correspondance, j'ai filtré ceux sans chiffres. Ce que $result2 imprime est exactement le contraire. Il imprime celui filtré, mais la clé est toujours 2, pas 0.

preg_split :

Séparez les chaînes par une expression régulière

 

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);


preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match(&#39;/(?:\D+|<\d+>)*[!?]/&#39;, &#39;foobar foobar foobar&#39;);
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);

preg_quote:

转义正则表达式字符

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, &#39;a&#39;);
print_r($result);
print_r($result2);

4、模式修正符

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP生成PDF文件的方法

PHP MPDF中文乱码如何解决

PHP判断手机是IOS还是Android的三个方法

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn