Maison > Article > développement back-end > Comment diviser et échapper des chaînes avec des expressions régulières PHP ?
Dans l'article précédent, je vous ai présenté "Comment effectuer une recherche et un remplacement d'expressions régulières en PHP ?" 》, qui présente en détail les connaissances pertinentes sur la recherche et le remplacement d'expressions régulières en PHP. Dans cet article, nous continuerons à examiner les connaissances pertinentes sur la segmentation de chaînes et l'échappement dans les expressions régulières. J'espère que cela sera utile à tout le monde. !
Dans l'article précédent, nous avons appris à effectuer une correspondance d'expression régulière globale en PHP, à détecter les éléments de tableau qui correspondent à un modèle donné et à effectuer une recherche et un remplacement d'expression régulière. Nous pouvons le faire via Le preg_match(. )
, la fonction preg_match_all()
, la fonction preg_grep()
et la fonction preg_replace()
peuvent être implémentées en utilisant la fonction régulière expressions Le but principal des expressions est d'implémenter des fonctions puissantes de manière simple. preg_match()
函数、preg_match_all()
函数、preg_grep()
函数和preg_replace()
函数就能够实现,使用正则表达式的主要目的就是为了通过简单的办法来实现强大的功能。
其中对于正则表达式与字符串之间的操作还有很多,其中就包括使用正则表达式分割字符串,那接下来我们就一起来看一下,我们怎样通过字符表达式来分割字符串。
<strong><span style="font-size: 20px;">preg_split() </span></strong>
函数
在PHP中 preg_split()
函数通过一个正则表达式来分割字符串,该函数的语法格式如下:
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )
其中需要注意的是:
$pattern
表示用于匹配的模式,也即正则表达式;$subject
表示要分隔的字符串;$limit
是个可选参数,如果指定,就将限制分隔得到的子串最多只有 limit 个,并且最后一个子串将包含所有剩余部分。limit 值为 -1
、0
或 NULL
时都代表“不限制”,建议使用 NULL。
$flags
是个可选参数,它有 3 个取值。若设置为 PREG_SPLIT_NO_EMPTY
,则 preg_split() 将返回分隔后的非空部分。若设置为 PREG_SPLIT_DELIM_CAPTURE
,则分隔的模式中的括号表达式将被捕获并返回。若设置为 PREG_SPLIT_OFFSET_CAPTURE
,则对于每一个出现的匹配返回时会附加字符串偏移量。
这将会改变返回数组中的每一个元素,使每个元素成为一个由第 0 个元素为分隔后的子串、第 1 个元素为该子串在 subject 中的偏移量组成的数组。返回值就是返回一个使用 pattern 分割 subject 字符串后得到的子串组成的数组。
接下来我们通过示例来看一下 preg_split() 函数的用法,示例如下:
<?php echo "<pre class="brush:php;toolbar:false">"; $subject = 'PHP中文网:http://www.php.cn/, baidu百度:http://www.baidu.com/'; $pattern = '/[\s,:]+/'; print_r( preg_split($pattern, $subject) ); print_r( preg_split($pattern, $subject, 3) ); ?>
输出结果:
示例如下:
<?php $str = 'father mother andyou'; var_dump($str); $chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE); var_dump($chars); ?>
输出结果:
由上述示例能够看出,通过preg_split() 函数能够完成通过一个真个表达式来分割字符串。接下来我们来看一下,怎样对正则表达式来进行转义。
<strong><span style="font-size: 20px;">PHP preg_quote()</span></strong>
函数
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符,包括所有大小写字母、数字、标点符号和一些符号。最简单的正则表达式是用于搜索字符串相比较的单个普通字符。例如,单字符正则表达式/A/会始终匹配字母 A。
除普通字符之外,正则表达式还可以包含“元字符”。元字符可分为单字符元字符和多字符元字符。例如,元字符d,它与数字字符相匹配。
PHP preg_quote()
函数用来对正则表达式字符串进行转义,也就是在特殊字符前边增加一个反斜杠,该函数的语法格式如下:
preg_quote($str [, $delimiter = NULL])
其中需要注意的是:
$str
表示正则表达式字符串;$delimiter
是个可选参数,额外增加的需要转义的字符。如果指定了 $delimiter
参数,被指定的字符也会被转义。这通常用于转义 PCRE 函数使用的分隔符。 /
是最常见的分隔符。
preg_quote()
函数会向参数 $str
<strong><span style="font-size: 20px;">preg_split() </span></strong>
Fonction🎜🎜En PHP, la fonction preg_split()
divise une chaîne via une expression régulière. Le format de syntaxe de la fonction est le suivant : 🎜<?php $url = 'http://www.baidu.com/'; echo preg_quote($url) . "<br />"; echo preg_quote($url, "/") . "<br />"; $textbody = "baidu百度 is *very* good to study."; $word = "*very*"; echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody ); ?>🎜Ce qu'il faut noter, c'est :
$pattern
représente le modèle utilisé pour la correspondance, c'est-à-dire qu'une expression régulière $subject
représente le ; chaîne à séparer ; $limit
est un paramètre facultatif Si spécifié, les sous-chaînes obtenues par limitation seront limitées à la limite, et la dernière sous-chaîne contiendra toutes les parties restantes. Lorsque la valeur limite est -1
, 0
ou NULL
, cela signifie "pas de limite". Il est recommandé d'utiliser NULL. 🎜🎜$flags
est un paramètre facultatif, qui a 3 valeurs. S'il est défini sur PREG_SPLIT_NO_EMPTY
, preg_split() renverra la partie non vide séparée. Si défini sur PREG_SPLIT_DELIM_CAPTURE
, les expressions entre crochets dans les modèles délimités seront capturées et renvoyées. S'il est défini sur PREG_SPLIT_OFFSET_CAPTURE
, le décalage de chaîne sera ajouté au retour pour chaque occurrence d'une correspondance. 🎜🎜Cela modifiera chaque élément du tableau renvoyé afin que chaque élément devienne un tableau composé du 0ème élément étant la sous-chaîne séparée et du 1er élément étant le décalage de la sous-chaîne dans le sujet. La valeur de retour est un tableau composé de sous-chaînes obtenues après avoir divisé la chaîne sujet à l'aide d'un motif. 🎜🎜Ensuite, jetons un coup d'œil à l'utilisation de la fonction preg_split() à travers un exemple. L'exemple est le suivant : 🎜<?php $keywords = ' for a g3/400'; $keywords = preg_quote($keywords, '/'); echo $keywords; // 返回 $40 for a g3\/400 ?>🎜Résultat de sortie :
<strong><span style="max-width:90%">PHP preg_quote()</span></strong>
Fonctions🎜🎜Les caractères normaux incluent tous les caractères imprimables et non imprimables non explicitement désignés comme métacaractères, y compris toutes les lettres majuscules et minuscules, les chiffres, les signes de ponctuation et certains symboles. L'expression régulière la plus simple est un seul caractère ordinaire utilisé pour comparer les chaînes de recherche. Par exemple, l'expression régulière à un seul caractère /A/ correspondra toujours à la lettre A. 🎜🎜En plus des caractères ordinaires, les expressions régulières peuvent également contenir des « métacaractères ». Les métacaractères peuvent être divisés en métacaractères à un seul caractère et en métacaractères à plusieurs caractères. Par exemple, le métacaractère d, qui correspond aux caractères numériques. 🎜🎜La fonction PHP preg_quote()
est utilisée pour échapper aux chaînes d'expressions régulières, c'est-à-dire en ajoutant une barre oblique inverse
devant les caractères spéciaux. Le format de syntaxe de cette fonction est le suivant : 🎜rrreee🎜Ce qu'il faut noter est :$str
représente une chaîne d'expression régulière ; $delimiter
est un paramètre facultatif et des caractères supplémentaires qui nécessitent être évadé. Si le paramètre $delimiter
est spécifié, les caractères spécifiés seront également échappés. Ceci est généralement utilisé pour échapper aux délimiteurs utilisés par la fonction PCRE. /
sont les délimiteurs les plus courants. La fonction 🎜🎜preg_quote()
ajoutera une barre oblique inverse avant chaque caractère d'expression régulière fourni par le paramètre $str
. Ceci est généralement utilisé lorsqu'une chaîne d'exécution doit être mise en correspondance en tant qu'expression régulière. 🎜正则表达式特殊字符有:.
\
+
*
?
[
^
]
$
(
)
{
}
=
!
<code>>
|
:
-
。要清楚/
不是正则表达式特殊字符。
接下来我们通过示例来看一下使用 preg_quote() 函数对字符串进行转义,示例如下:
<?php $url = 'http://www.baidu.com/'; echo preg_quote($url) . "<br />"; echo preg_quote($url, "/") . "<br />"; $textbody = "baidu百度 is *very* good to study."; $word = "*very*"; echo preg_replace( "/".preg_quote($word)."/", "<i>".$word."</i>", $textbody ); ?>
输出结果:
示例如下:
<?php $keywords = '$40 for a g3/400'; $keywords = preg_quote($keywords, '/'); echo $keywords; // 返回 \$40 for a g3\/400 ?>
输出结果:
上述示例中,便是通过preg_quote() 函数用来对正则表达式字符串进行转义。
大家如果感兴趣的话,可以点击《PHP视频教程》、《正则表达式手册》进行更多关于PHP和正则表达式知识的学习。
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!