a php str_replace preg
Les données que nous devons traiter avec des programmes ne sont pas toujours conçues à l'avance avec une réflexion sur la base de données, ou elles ne peuvent pas être stockées en utilisant la structure de la base de données de.
Par exemple, les modèles d'analyse du moteur de modèles, le filtrage des informations sensibles au spam, etc.
Généralement dans ce cas, nous utilisons des expressions régulières pour faire correspondre preg_match et remplacer preg_replace selon nos règles.
Mais dans les applications générales, elles ne sont rien de plus que du CRUD de base de données, et il y a très peu de possibilités de jouer avec les expressions régulières.
D'après ce qui a été dit précédemment, il existe deux scénarios : l'analyse statistique, par appariement, le traitement par remplacement ;
Remplacement régulier PHP preg_replace(), différent du remplacement régulier Javascript, PHP preg_replace() remplace par défaut tous les éléments dont les symboles correspondent aux conditions.
Les expressions régulières dans la plupart des langues sont similaires, mais il existe des différences subtiles.
Expression régulière PHP
preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)
Caractères réguliers | Explication régulière |
---|---|
Marquer le caractère suivant comme caractère spécial, Ou un caractère littéral, une référence arrière ou un caractère d'échappement octal. Par exemple, « n » correspond au caractère « n ». "\n" correspond à un caractère de nouvelle ligne. La séquence "\" correspond à "" et "(" correspond à "(". | |
^ | correspond au début de la chaîne d'entrée. Si l'objet RegExp est défini Attribut multiligne, ^ correspond également à la position après "n" ou "r" |
$ | correspond à la position de fin de la chaîne d'entrée s'il est défini. correspond également à la position avant "n" ou "r". |
* | correspond à la sous-expression précédente zéro ou plusieurs fois zo* peut correspondre à "z" et ". zoo". *Équivalent à {0,} |
correspond à la sous-expression précédente une ou plusieurs fois. . Par exemple, "zo+" peut correspondre à "zo", mais pas à "z". . + est équivalent à {1,} | ? | Correspond à la sous-expression précédente zéro ou une fois. Par exemple, « do(es) ? » " dans "fait". ? équivaut à {0,1}. 🎜>
n est un entier non négatif qui correspond à un certain nombre de fois. Par exemple , "o{2}" ne peut pas correspondre au "o" dans "Bob", cependant. Peut correspondre à deux o dans "food". entier négatif. Par exemple, "o{. 2,}" ne peut pas correspondre au "o" dans "Bob", mais il peut correspondre à tous les o dans "foooood". "o{1,}" est équivalent à "o+". "o{0,}" est équivalent à "o*". ;=m correspond au moins n fois. Par exemple, "o{1,3}" correspondra aux trois premiers o de "fooooood". . Notez la virgule et les deux chiffres Il ne peut y avoir d'espaces entre | |
lorsque ce caractère est suivi d'un autre limiteur (*,+,?, {n},{n, }, {n,m}), le mode de correspondance est non gourmand. Le mode non gourmand correspond le moins possible à la chaîne recherchée, tandis que le mode gourmand par défaut correspond à la plus grande partie de la chaîne recherchée. chaîne autant que possible. Par exemple, pour la chaîne "oooo", "o?" correspondra à un seul "o", tandis que "o+" correspondra à tous les "o" | |
correspondent. N'importe quel caractère sauf "n". Pour faire correspondre n'importe quel caractère incluant "n", utilisez un modèle comme "[sS]" | (motif)<.> Faites correspondre le modèle et obtenez cette correspondance. La correspondance obtenue peut être obtenue à partir de la collection Matches générée, en utilisant la collection SubMatches dans VBScript et l'attribut $0...$9 dans JScript. Pour faire correspondre les caractères entre parenthèses, utilisez "(" ou ")". |
(?:pattern) | correspond au modèle mais n'obtient pas le résultat correspondant, ce qui signifie qu'il s'agit d'une correspondance non obtenue et n'est pas stockée pour une utilisation ultérieure. Ceci est utile lors de la combinaison de parties d'un motif à l'aide du caractère ou "(|)". Par exemple, « industr(?:y|ies) » est une expression plus simple que « industry|industries ». |
(?=motif) | Recherche positive positive, correspondant à la chaîne de recherche au début de tout modèle de correspondance de chaîne. Il s'agit d'une correspondance sans récupération, c'est-à-dire qu'il n'est pas nécessaire de récupérer la correspondance pour une utilisation ultérieure. Par exemple, « Windows(?=95|98|NT|2000) » peut correspondre à « Windows » dans « Windows2000 », mais ne peut pas correspondre à « Windows » dans « Windows3.1 ». La prélecture ne consomme pas de caractères, c'est-à-dire qu'après une correspondance, la recherche de la correspondance suivante commence immédiatement après la dernière correspondance, plutôt qu'après le caractère contenant la prélecture. |
(?!modèle) | Recherche négative directe, faisant correspondre la chaîne de recherche au début de toute chaîne qui ne correspond pas au modèle. Il s'agit d'une correspondance sans récupération, c'est-à-dire qu'il n'est pas nécessaire de récupérer la correspondance pour une utilisation ultérieure. Par exemple, « Windows(?!95|98|NT|2000) » peut correspondre à « Windows » dans « Windows3.1 », mais ne peut pas correspondre à « Windows » dans « Windows2000 ». |
(?<=motif) | La pré-vérification positive inversée est similaire à la pré-vérification positive avant, mais dans la direction opposée. Par exemple, "(?<=95|98|NT|2000)Windows" peut correspondre à "Windows" dans "2000Windows", mais ne peut pas correspondre à "Windows" dans "3.1Windows". |
(?La pré-vérification négative inversée est similaire à la pré-vérification négative avant, mais dans la direction opposée. Par exemple, "(? | |
x|y | correspond à x ou y. Par exemple, « z|food » correspond à « z » ou « food ». "(z|f)ood" correspond à "zood" ou "food". |
[xyz] | jeu de caractères. Correspond à l'un des caractères contenus. Par exemple, « [abc] » correspondrait au « a » dans « plain ». |
[^xyz] | Un ensemble de caractères de valeur négative. Correspond à n’importe quel caractère non inclus. Par exemple, "[^abc]" correspondrait à "plin" dans "plain". |
[a-z] | plage de caractères. Correspond à n’importe quel caractère dans la plage spécifiée. Par exemple, "[a-z]" correspond à n'importe quel caractère alphabétique minuscule compris entre "a" et "z". Remarque : Ce n'est que lorsque le trait d'union se trouve à l'intérieur du groupe de caractères et entre deux caractères qu'il peut représenter la plage de caractères ; s'il apparaît au début du groupe de caractères, il ne peut représenter que le trait d'union lui-même |
Plage de caractères négative. Correspond à tout caractère ne se trouvant pas dans la plage spécifiée. Par exemple, "[^a-z]" correspond à tout caractère qui n'est pas compris entre "a" et "z". | |
correspond à une limite de mot, qui fait référence à la position entre un mot et un espace. Par exemple, « erb » peut correspondre au « er » dans « never » mais pas au « er » dans « verb ». | |
correspond aux limites autres que les mots. "erB" correspond au "er" dans "verb", mais pas au "er" dans "jamais". | |
correspond au caractère de contrôle spécifié par x. Par exemple, cM correspond à un caractère Control-M ou à un retour chariot. La valeur de x doit être A-Z ou a-z. Sinon, traitez c comme un caractère « c » littéral. | |
correspond à un caractère numérique. Équivalent à [0-9]. | |
correspond à un caractère non numérique. Équivalent à [^0-9]. | |
correspond à un saut de formulaire. Équivalent à x0c et cL. | |
correspond à un caractère de nouvelle ligne. Équivalent à x0a et cJ. | |
correspond à un caractère de retour chariot. Équivalent à x0d et cM. | |
correspond à n'importe quel caractère d'espacement, y compris les espaces, les tabulations, les sauts de formulaire, etc. Équivalent à [fnrtv]. | |
correspond à tout caractère autre qu'un espace. Équivalent à [^ fnrtv]. | |
correspond à un caractère de tabulation. Équivalent à x09 et cI. | |
correspond à un caractère de tabulation verticale. Équivalent à x0b et cK. | |
correspond à n'importe quel caractère de mot, y compris un trait de soulignement. Équivalent à "[A-Za-z0-9_]". | |
correspond à n'importe quel caractère autre qu'un mot. Équivalent à "[^A-Za-z0-9_]". | |
correspond à n, où n est la valeur d'échappement hexadécimale. La valeur d’échappement hexadécimale doit comporter exactement deux chiffres. Par exemple, « x41 » correspond à « A ». "x041" équivaut à "x04&1". Le codage ASCII peut être utilisé dans les expressions régulières. | |
correspond à num, où num est un entier positif. Une référence au match obtenu. Par exemple, "(.)1" correspond à deux caractères identiques consécutifs. | |
identifie une valeur d'échappement octale ou une référence arrière. n est une référence vers l'arrière si n est précédé d'au moins n sous-expressions récupérées. Sinon, si n est un nombre octal (0-7), alors n est une valeur d'échappement octale. | |
Identifie une valeur d'échappement octale ou une référence arrière. Si nm est précédé d'au moins nm get sous-expressions, nm est une référence vers l'arrière. Si nm est précédé d'au moins n, alors n est une référence vers l'arrière suivie du littéral m. Si aucune des conditions précédentes n'est remplie et si n et m sont tous deux des nombres octaux (0-7), nm correspondra à la valeur d'échappement octale nm. | |
Si n est un nombre octal (0-7) et que m et l sont tous deux des nombres octaux (0-7), faites correspondre la valeur d'échappement octale nml. | |
correspond à n, où n est un caractère Unicode représenté sous forme de quatre chiffres hexadécimaux. Par exemple, u00A9 correspond au symbole de droit d'auteur (©). |
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
例子 1
使用带有数组和 count 变量的 str_replace() 函数:
<?php $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; ?>
例子 2
使用带有需要替换的元素少于查找到的元素的 str_replace() 函数:
<?php $find = array("Hello","world"); $replace = array("B"); $arr = array("Hello","world","!"); print_r(str_replace($find,$replace,$arr)); ?>
四.php str_irreplace
实例
把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai":
<?php echo str_replace("world","Shanghai","Hello world!"); ?>
定义和用法
str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。
该函数必须遵循下列规则:
如果搜索的字符串是数组,那么它将返回数组。
如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
注释:该函数区分大小写。请使用 str_ireplace() 函数执行不区分大小写的搜索。
注释:该函数是二进制安全的。
语法
str_replace(find,replace,string,count)
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
例子 1
使用带有数组和 count 变量的 str_replace() 函数:
<?php $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; ?>
例子 2
使用带有需要替换的元素少于查找到的元素的 str_replace() 函数:
<?php $find = array("Hello","world"); $replace = array("B"); $arr = array("Hello","world","!"); print_r(str_replace($find,$replace,$arr)); ?>
五 .php str_split
PHP函数split()的基本语法为:array split ( string $pattern, string $string [, int $limit] )。我们向大家举了两个例子来具体讲解这个函数的使用方法。
对于初学者来说,掌握PHP中常用函数的用法,是其继续学习的基础。今天我们就为大家详细介绍有关PHP函数split()的一些使用方法,希望大家能通过这篇文章介绍的内容增加自己的知识库。
说明
array split ( string $pattern, string $string [, int $limit] )
提示
preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比PHP函数split()更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费。
本函数返回一个字符串数组,每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 FALSE。
将 /etc/passwd 中的前四个字段分割出来:
例 1839. PHP函数split()例子
深入PHP nl2br()格式化输出的详解
<?php list($user, $pass, $uid, $gid, $extra) = split (":", $passwd_line, 5); ?>
如果字符串中有 n 个与 pattern 匹配的项目,则返回的数组将包含 n+1 个单元。例如,如果没有找到 pattern,则会返回一个只有一个单元的数组。当然,如果 string 为空也是这样。
解析可能用斜线,点,或横线分割的日期:
例 1840. PHP函数split()例子
<?php // 分隔符可以是斜线,点,或横线 $date = "04/30/1973"; list($month, $day, $year) = split ('[/.-]', $date); echo "Month: $month; Day: $day; Year: $year<br />\n"; ?>
想仿效 Perl 中类似的 @chars = split('', $str) 行为,请参考 preg_split() 或 str_split() 函数中的例子。
注意 pattern 是一个正则表达式。如果想要用的分割字符是正则表达式中的特殊字符,要先将其转义。如果觉得PHP函数split()(或其它任何 regex 函数)行为古怪的话,请阅读包含在 PHP 发行包中 regex/ 子目录下的 regex.7 文件。该文件是手册页面格式,可以用类似 man /usr/local/src/regex/regex.7 的命令来阅读