Maison >développement back-end >tutoriel php >En savoir plus sur les expressions régulières php
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 :
$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('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar'); $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, 'a'); print_r($result); print_r($result2);
4、模式修正符
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
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!