站長資訊網
最全最豐富的資訊網站

php 正則表達式的子模式詳解

首先,我們先看一段PHP代碼:

復制代碼 代碼如下:
<?php
$time = date (“Y-m-d H:i:s”);
$pattern = “/d{4}-d{2}-d{2} d{2}:d{2}:d{2}/i”;
if(preg_match($pattern,$time,$arr)){
echo “<pre>”;
print_r($arr);
echo “</pre>”;
}
?>

顯示結果:

復制代碼 代碼如下:
Array
(
[0] => 2012-06-23 03:08:45
)

有沒有注意到,顯示的結果只有一條數據,即符合匹配模式的時間格式,那如果只有一條記錄的話,為什么還要用數組保存呢?直接使用字符串保存不是更好?

帶著這個問題,我們來看下正則表達式中的子模式。

在正則表達式中,可以使用“(”和“)”將模式中的子字符串括起來,以形成一個子模式。將子模式視為一個整體時,那么它就相當于一個單個字符。

比如,我們將以上的代碼稍微修改下,改成如下:

復制代碼 代碼如下:
<?php
$time = date (“Y-m-d H:i:s”);
$pattern = “/(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2})/i”;
if(preg_match($pattern,$time,$arr)){
echo “<pre>”;
print_r($arr);
echo “</pre>”;
}
?>

注意:我只修改了$pattern,在匹配模式中,使用了括號()

執行結果:

復制代碼 代碼如下:
Array
(
[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
$time = date (“Y-m-d H:i:s”);
$pattern = “/(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2})/i”;
$replacement = “$time格式為:$0<BR>替換后的格式為:\1年\2月\3日 \4時\5分\6秒”;
print preg_replace($pattern, $replacement, $time);
if(preg_match($pattern,$time,$arr)){
echo “<pre>”;
print_r($arr);
echo “</pre>”;
}
?>

注意:

因為是在雙引號中,所以使用分組的時候應該使用兩個反斜杠,如:\1,而如果在單引號中,則使用一個反斜杠就可以了,如:1
\1用于捕獲分組一種的內容:2012,\6用于捕獲分組6中的內容          
執行結果:

$time格式為:2012-06-23 03:30:31
替換后的格式為:2012年06月23日 03時30分31秒

復制代碼 代碼如下:
Array
(
[0] => 2012-06-23 03:30:31
[1] => 2012
[2] => 06
[3] => 23
[4] => 03
[5] => 30
[6] => 31
)
贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品国产亚洲AV无码偷窥| 99精品高清视频一区二区| 亚洲国产精品美女久久久久| 久久国产精品免费观看| 99re在线视频精品| 亚洲AV无码成人网站久久精品大| 国产在线精品二区| 国产成人AV无码精品| 麻豆va在线精品免费播放| 亚洲日韩看片无码电影| 八戒久久精品一区二区三区| 国内精品久久久久久影院 | 国产精品色午夜视频免费看| 日韩精品无码区免费专区| 久久久久久久91精品免费观看| 精品国产一区AV天美传媒| 精品无码av一区二区三区| 99久久免费中文字幕精品| 99视频精品全部在线| 久久综合久久自在自线精品自| 少妇人妻偷人精品免费视频| 午夜精品久久久久久毛片| 久久一区二区精品综合| 国产精品美女久久久久浪潮AV| 国产精品青草久久久久婷婷| 亚洲国产成人精品电影| 亚洲国产精品久久久久秋霞影院| 久久99热只有频精品8| 精品人妻码一区二区三区| 久久国产精品成人影院| 精品一区二区三区自拍图片区| 99re热久久精品这里都是精品| 精品无码一区二区三区爱欲九九| 久久精品人人做人人爽97 | 人妻熟妇乱又伦精品视频APP| 国产精品69白浆在线观看免费| 99久久综合国产精品免费| 国产精品无码一区二区在线观| 精品国产呦系列在线看| 国产精品制服丝袜| 中文字幕日韩亚洲|