PHP正则表明式替换达成是何许的吧?首先向您介绍下PHP
preg_replace,PHP
preg_replace
的选择是大家达成的办法,那么对于PHP正则表明式替换达成进程我们从实例入手。

详解PHP正则表明式替换完毕(PHP preg_replace,PHP preg_replace),pregreplace正则

PHP正则表明式替换达成是怎么着的吧?首先向您介绍下PHP
preg_replace,PHP
preg_replace
的接纳是我们达成的法子,那么对于PHP正则表明式替换完结进程我们从实例动手。

PHP正则表明式替换的相关概念:

preg_replace:实施正则表明式的物色和替换

mixed preg_replace (  
mixed pattern,  
mixed replacement,  
mixed subject [, int limit]) 

preg_replace:允许你替换字符串中相配到您定义的正则表明式。

二个轻易易行的讲解移除功效:

preg_replace(‘[(/*)+.+(*/)]’, ”, $val);

这段代码能够移除在 PHP 和 CSS 中使用 /* 注释 */
格式的多多行注释。个中的八个参数分别为正则表明式,要替换到的字符串和要替换的指标字符串(这里要做移除成效,所以是个空白字符串
-> ”)。若是你想相称次级规则,能够行使 $0 代表全部极度,$一、$二等,依此类推代表各自的次级规则。

在 subject 中寻找 pattern 情势的十分项并替换为 replacement。假使钦点了
limit,则仅替换 limit 个十分,假使省略 limit 或然其值为
-1,则有着的同盟项都会被沟通。

replacement 能够包涵 //n 情势或(自 PHP 四.0.肆 起)$n
情势的逆向引用,首推使用后者。每一种此种引用将被轮换为与第 n
个被破获的括号内的子情势所相称的公文。n 能够从 0 到 9玖,当中 //0 或 $0
指的是被全部方式所相配的公文。对左圆括号从左到右计数(从 1起先)以获得子方式的数额。

对替换情势在多个逆向引用前边随着2个数字时(即:紧接在贰个合作的方式前面的数字),无法利用深谙的
//1 符号来代表逆向引用。譬喻说 //1一,将会使 preg_replace()
搞不清楚是想要二个 //一 的逆向引用后面随着3个数字 1 依然三个 //1一的逆向引用。本例中的化解办法是运用 /${一}一。那会变成一个切断的 $1逆向引用,而使另一个 1 只是只是的文字。

PHP正则表达式替换的有关实例:

事例 一. 逆向引用后边跟着数字的用法

<?php 
$string = "April 15, 2003"; 
$pattern = "/(/w+) (/d+), (/d+)/i"; 
$replacement = "/${1}1,/$3"; 
print preg_replace($pattern, $replacement, $string); 
/* Output 
  ====== 
April1,2003 
*/ 
?>  

假诺找寻到相称项,则会回去被替换后的 subject,不然重临原本不改变的
subject。

preg_replace() 的种种参数(除了 limit)都能够是3个数组。即使 pattern
和 replacement
都以数组,将以其键名在数组中冒出的逐一来开始展览拍卖。那不一定和目录的数字顺序一样。借使利用索引来标记哪个
pattern 将被哪些 replacement 来替换,应该在调用 preg_replace() 此前用
ksort() 对数组举行排序。

例子 2. 在 preg_replace()
中运用索引数组

<?php 
$string =  
"The quick brown fox jumped over the lazy dog."; 
$patterns[0] = "/quick/"; 
$patterns[1] = "/brown/"; 
$patterns[2] = "/fox/"; 
$replacements[2] = "bear"; 
$replacements[1] = "black"; 
$replacements[0] = "slow"; 
print preg_replace($patterns, $replacements, $string); 
/* Output 
  ====== 
The bear black slow jumped over the lazy dog. 
*/ 
/* By ksorting patterns and replacements, 
  we should get what we wanted. */ 
ksort($patterns); 
ksort($replacements); 
print preg_replace($patterns, $replacements, $string); 
/* Output 
  ====== 
The slow black bear jumped over the lazy dog. 
*/ 
?>  

假定 subject 是个数组,则会对 subject
中的每一个项目实行搜索和替换,并回到七个数组。

1经 pattern 和 replacement 都以数组,则 preg_replace()
会依次从中分别抽取值来对 subject 进行查找和替换。要是 replacement
中的值比 pattern 中的少,则用空字符串作为剩余的轮换值。借使 pattern
是数组而 replacement 是字符串,则对 pattern
中的各个值都用此字符串作为替换值。反过来则未有趣了。

/e 改进符使 preg_replace() 将 replacement 参数作为 PHP
代码(在适龄的逆向引用替换完之后)。提醒:要力保 replacement
构成二个官方的 PHP 代码字符串,不然 PHP 会在告知在蕴藏 preg_replace()
的行中出现语法解析错误。

事例 3. 交替数个值

<?php 
$patterns = array  
("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/", 
          "/^/s*{(/w+)}/s*=/"); 
$replace = array  
("//3///4///1//2", "$//1 ="); 
print preg_replace  
($patterns, $replace, "{startDate} = 1999-5-27"); 
?> 

本例将出口:

$startDate = 5/27/1999

例子 4. 使用 /e 修正符

<?php 
preg_replace  
("/(<//?)(/w+)([^>]*>)/e", 
"'//1'.strtoupper('//2').'//3'", 
$html_body); 
?> 

这将使输入字符串中的全部 HTML 标志形成大写,以上的实例运行支持版本为PHP
三>= 3.0.九, PHP 4。

PHP正则表明式替换的相关内容就向您介绍到此地,希望特别对您询问和精晓PHP正则表明式替换有所支持。

用正则表达式替换内容 php

在此以前做二个品类,正是有二个问答的页面,比方说在答应依旧提问的内容中插入表情。写到内容里的是表情图片的名字(而且是不带后缀的,比方:f_00二.png)表情包放在项目里,笔者急需在取除内容的时候将中间的表情名字替换来图片。

存到数据库中的内容是如此的:   不精晓[f_013]   
(最终边的那么些[f_013]即使表情图在数据库中存放的款式)

自身索要做的正是从数据库中抽取内容,并且把内容中的像那样的字符 [详解PHP正则表达式替换实现,正则替换所有符合条件的字符串。f_013]
管理成图片地址,很引人侧目这里须求用到正则表明式。

一.首先本人得先找到这几个字符串

$rule = “/(?:\[)(f_.[0-9]{1,3})(?:\])/i”;

这些正则相称能够帮作者找到表情的字符串

贰.找到后就是把这一个字符串换成表情图片存放的地址,这里运用了一个函数便是正则表达式的交替。

正是其一函数:preg_match_all

echo preg_replace(“/(?:\[)(f_.[0-9]{1,3})(?:\])/i”,”<img
src=’__PUBLIC__/face/\${1}.png’>”,$line[‘content’]);
$line[‘content’]   那几个是本身从数据库中抽出的内容,

“<img src=’__PUBLIC__/face/\${1}.png’>” 
这一个是自己就要替换的图片地址,举个例子小编的图纸地址是那样的<img
src=”__PUBLIC__/face/f_013.png”>

那么些中有2个特别重要的知识点: “\${壹}”  
它正是非常存放在数据Curry面表情的字符串。

\${1} = f_013

自己那边有本身替换的三个1体化代码:

<?php
$result = array();
   $n = preg_match_all("/(?:\[)(f_.[0-9]{1,3})(?:\])/i",$line['content'], $result); /*返回查找到符合条件的字符串的个数*/
   if($n == 0 || $n == false)  /*如果是0或者false就说明没有表情*/
   {
    echo $line['content'];
   }else
   {
     echo preg_replace("/(?:\[)(f_.[0-9]{1,3})(?:\])/i","<img src='__PUBLIC__/face/\${1}.png'>",$line['content']);
   }
   ?>

preg_replace,PHP
preg_replace),pregreplace正则 PHP正则表明式替换完成是什么样的啊?首先向你介绍下 PHP preg_replac…

亟需大家用程序管理的数额并不总是预先以数据库思维设计的,可能说是不大概用数据库的构造去存款和储蓄的。
举个例子模版引擎深入分析模版、垃圾敏感信息过滤等等。
诚如这种情景,大家用正则按我们的规则去相称preg_match、替换preg_replace。
但一般的利用中,无非是些数据库CRUD,正则摆弄的空子异常少。
根据前边说的,二种现象:计算分析,用非凡;管理用替换。

亟需大家用程序处理的数额并不总是预先以数据库思维设计的,恐怕说是无法用数据库的布局去存款和储蓄的。
举例模版引擎深入分析模版、垃圾敏感音信过滤等等。
貌似这种气象,大家用正则按大家的平整去相称preg_match、替换preg_replace。
但一般的施用中,无非是些数据库CRUD,正则摆弄的机遇相当的少。
基于后边说的,两种处境:总计深入分析,用十分;管理用替换。

PHP正则表达式替换的连锁概念:

PHP preg_replace() 正则替换,与Javascript 正则替换不相同,PHP
preg_replace() 默许就是替换全部符号相配原则的因素。 

PHP preg_replace() 正则替换,与Javascript 正则替换差异,PHP
preg_replace() 暗中同意就是替换全部符号匹配原则的成分。 

preg_replace:推行正则表明式的寻找和替换

复制代码 代码如下:

复制代码 代码如下:

mixed preg_replace (  
mixed pattern,  
mixed replacement,  
mixed subject [, int limit]) 

preg_replace (正则表达式, 替换到, 字符串,
最大替换次数【默许-壹,无数十次】, 替换次数)

preg_replace (正则表明式, 替换来, 字符串,
最大替换次数【暗许-一,无多次】, 替换次数)

preg_replace:允许你替换字符串中相称到您定义的正则表明式。

大繁多言语的正则表达式都以大半的,但是也可以有1线的距离。

大部语言的正则表达式都以差没多少的,可是也可以有细微的歧异。

一个简约的解说移除功用:

PHP 正则表达式

PHP 正则表明式

preg_replace(‘[(/*)+.+(*/)]’, ”, $val);

正则字符 正则解释
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如, \n 匹配字符 n 。 \\n 匹配一个换行符。序列 \\ 匹配 \ 而 \( 则匹配 ( 。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配 \n 或 \r 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配 \n 或 \r 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配 z 以及 zoo 。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如, zo+ 能匹配 zo 以及 zoo ,但不能匹配 z 。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如, do(es)? 可以匹配 does 或 does 中的 do 。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如, o{2} 不能匹配 Bob 中的 o ,但是能匹配 food 中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如, o{2,} 不能匹配 Bob 中的 o ,但能匹配 foooood 中的所有o。 o{1,} 等价于 o+ 。 o{0,} 则等价于 o* 。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如, o{1,3} 将匹配 fooooood 中的前三个o。 o{0,1} 等价于 o? 。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 oooo , o? 将匹配单个 o ,而 o+ 将匹配所有 o 。
.点 匹配除 \n 之外的任何单个字符。要匹配包括 \n 在内的任何字符,请使用像 [\s\S] 的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用 \( 或 \) 。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符 (|) 来组合一个模式的各个部分是很有用。例如 industr(?:y|ies) 就是一个比 industry|industries 更简略的表达式。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, Windows(?=95|98|NT|2000) 能匹配 Windows2000 中的 Windows ,但不能匹配 Windows3.1 中的 Windows 。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如 Windows(?!95|98|NT|2000) 能匹配 Windows3.1 中的 Windows ,但不能匹配 Windows2000 中的 Windows 。
(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反。例如, (?<=95|98|NT|2000)Windows 能匹配 2000Windows 中的 Windows ,但不能匹配 3.1Windows 中的 Windows 。
(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反。例如 (?<!95|98|NT|2000)Windows 能匹配 3.1Windows 中的 Windows ,但不能匹配 2000Windows 中的 Windows 。
x|y 匹配x或y。例如, z|food 能匹配 z 或 food 。 (z|f)ood 则匹配 zood 或 food 。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, [abc] 可以匹配 plain 中的 a 。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, [^abc] 可以匹配 plain 中的 plin 。
[a-z] 字符范围。匹配指定范围内的任意字符。例如, [a-z] 可以匹配 a 到 z 范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如, [^a-z] 可以匹配任何不在 a 到 z 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, er\b 可以匹配 never 中的 er ,但不能匹配 verb 中的 er 。
\B 匹配非单词边界。 er\B 能匹配 verb 中的 er ,但不能匹配 never 中的 er 。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的 c 字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_] 。
\W 匹配任何非单词字符。等价于 [^A-Za-z0-9_] 。
\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, \x41 匹配 A 。 \x041 则等价于 \x04&1 。正则表达式中可以使用ASCII编码。
\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如, (.)\1 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
\nml 如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。
正则字符 正则解释
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o?”将匹配单个“o”,而“o+”将匹配所有“o”。
.点 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[\s\S]”的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。
\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
\nml 如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。

这段代码能够移除在 PHP 和 CSS 中使用 /* 注释 */
格式的多多行注释。当中的四个参数分别为正则表明式,要替换来的字符串和要替换的靶子字符串(这里要做移除作用,所以是个空白字符串
-> ”)。要是你想相称次级规则,能够采取 $0 代表整个相配,$1、$二等,就那样类推代表分其余次级规则。

上表是正则表明式相比健全的分解,而商标中的正则字符都有特异含义,已经不复代表原字符含义。如正则表达式中

上表是正则表明式相比较健全的讲解,而商标中的正则字符都有异样意义,已经不复代表原字符含义。如正则表明式中“+”不表示加号,而是表示相称叁遍或频仍。而壹旦想要让“+”表示加号,则须要在其前方加上“\”转义,相当于用“\+”表示加号。

在 subject 中搜索 pattern 情势的相配项并替换为 replacement。假使钦赐了
limit,则仅替换 limit 个门道十二分,要是省略 limit 或然其值为
-壹,则有着的非常项都会被轮换。

  • 不意味加号,而是表示相称贰回或频仍。而只要想要让 +
    表示加号,则需求在其日前加上 \ 转义,也等于用 \+ 代表加号。

复制代码 代码如下:

replacement 可以分包 //n 格局或(自 PHP 肆.0.4 起)$n
情势的逆向引用,主要推荐使用后者。每一个此种引用将被交流为与第 n
个被破获的括号内的子情势所相称的文件。n 能够从 0 到 9九,当中 //0 或 $0
指的是被整个情势所相配的文件。对左圆括号从左到右计数(从 一初叶)以取得子格局的数量。

复制代码 代码如下:

1+1=贰  正则表达式是: 一\+1=2
而正则表明式 一+一=贰 能够表示,四个1=二,即:
11=二     正则表明式:一+1=二
11壹=贰    正则表明式:壹+壹=贰
111一=二   正则表明式:一+1=二
……

对替换情势在二个逆向引用前面随着一个数字时(即:紧接在2个合营的形式后面包车型客车数字),不能够利用深谙的
//一 符号来表示逆向引用。比如说 //1一,将会使 preg_replace()
搞不清楚是想要八个 //一 的逆向引用前边随着叁个数字 1 照旧三个 //11的逆向引用。本例中的化解办法是利用 /${一}一。那会变成三个切断的 $1逆向引用,而使另1个 一 只是只是的文字。

一+1=贰  正则表明式是: 一\+1=2
而正则表明式 壹+1=二 能够象征,多少个1=二,即:
1一=贰     正则表明式:1+一=二
11壹=2    正则表明式:一+一=二
111一=二   正则表明式:一+壹=二
……

也正是说全数正则字符都有一定含义,若是须求再用来代表原字符含义,就供给在前头加“\”转义,即使非正则字符,用“\”转义也是从未有过难题的。

PHP正则表达式替换的相干实例:

也便是说全体正则字符都有特定含义,倘若急需再用来代表原字符含义,就必要在前边加
\ 转义,就算非正则字符,用 \ 转义也是没反常的。

复制代码 代码如下:

事例 1. 逆向引用前边跟着数字的用法

复制代码 代码如下:

1+1=二  正则表明式也足以是: \1\+\1\=\2
对全数字符都转义,然则这种不提出选用。

<?php 
$string = "April 15, 2003"; 
$pattern = "/(/w+) (/d+), (/d+)/i"; 
$replacement = "/${1}1,/$3"; 
print preg_replace($pattern, $replacement, $string); 
/* Output 
  ====== 
April1,2003 
*/ 
?>  

一+一=二  正则表明式也得以是: \1\+\1\=\2
对负有字符都转义,不过这种不提出使用。

而正则表明式必供给使用定界符包围起来,在Javascript中定界符是“/”,而在PHP中,比较遍布的是用“/”定界,也得以用“#”定界,而且外面还必要用引号包围起来。

网站地图xml地图