PHP正则表达式模式详解 浏览:209

首先,让我们看看PHP代码的一部分:

复制代码代码如下所示:
< PHP
$时间=日期(当前H:我:);
$模式2{ { 4 } } - { 2 } { 2 } { 2 } }:{ 2 };
If (preg_match ($pattern, $time, $arr)) {

print_r($ ARR);

}
>

显示结果:
复制代码代码如下所示:
阵列

{0} = > 2012-06-23 03:08:45


您注意到结果只有一个数据,即匹配匹配模式的时间格式。如果只有一个记录,为什么我们需要用数组保存它呢用绳子直接得救不是更好吗

这个问题,我们看看正则表达式的子模式。

在正则表达式中,可以使用(和)将子模式中形成一个模式。当模式视为一个整体,它相当于一个单字符。

例如,我们将代码更改为如下所示:
复制代码代码如下所示:
< PHP
$时间=日期(当前H:我:);
$模式(({ { 4 })-( { 2 })-( { 2 })):( { 2 }):( { 2 })i ;
如果(preg_match(美元美元美元模式,ARR)){

print_r($ ARR);

}
>

注意:我只修改了$模式,在匹配模式下,使用圆括号()

实施结果:

复制代码代码如下所示:
阵列

{ 0 } = > 2012-06-23 03:19:23
{ 1 } = 2012
{ 2 } = 06
{ 3 } = 23
{ 4 } = 03
{ 5 } = 19
{ 6 } = 23


总结:我们可以使用括号的匹配模式进行分组,默认情况下,每个分组会自动拥有一个组号,规则是:从左到右,以左括号分组标志为第二组,1组的第一次亮相,作为集团的2号,将其中的。0组对应于整个正则表达式。分组后,整个正则匹配模式,落后的参考还可以重复以前的组匹配的文本搜索。例如, 1个代表与1组文字, 2个代表文本匹配的2组,和所以,我们可以进一步修改下面的代码,如下所示:
复制代码代码如下所示:
< PHP
$时间=日期(当前H:我:);
$模式(({ { 4 })-( { 2 })-( { 2 })):( { 2 }):( { 2 })i ;
$替换= $时间格式为:$ 0替换格式:1,3,4, 5秒6;
打印preg_replace(合模式,取代美元,美元的时间);
如果(preg_match(美元美元美元模式,ARR)){

print_r($ ARR);

}
>

小心 uff1a

Because it is in double quotation marks, so when using grouping, two backslashes should be used, such as 1, and if a single quotation mark is used, a backslash can be used, such as 1.
1用于捕获数据包的一个内容:2012,用于捕获数据包6中的内容6。
实施结果:


美元的时间格式是:2012-06-23 03:30:31
替换格式为:03, 30,31秒,06个月,2012。
复制代码代码如下所示:
阵列

{ 0 } = > 2012-06-23 03:30:31
{ 1 } = 2012
{ 2 } = 06
{ 3 } = 23
{ 4 } = 03
{ 5 } = 30
{ 6 } = 31

推荐文章1
广告