首先,让我们看看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
)