欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          php 正則表達(dá)式的子模式詳解

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

          復(fù)制代碼 代碼如下:
          <?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>”;
          }
          ?>

          顯示結(jié)果:

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

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

          帶著這個(gè)問(wèn)題,我們來(lái)看下正則表達(dá)式中的子模式。

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

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

          復(fù)制代碼 代碼如下:
          <?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,在匹配模式中,使用了括號(hào)()

          執(zhí)行結(jié)果:

          復(fù)制代碼 代碼如下:
          Array
          (
          [0] => 2012-06-23 03:19:23
          [1] => 2012
          [2] => 06
          [3] => 23
          [4] => 03
          [5] => 19
          [6] => 23
          )

          總結(jié):我們可以使用小括號(hào)給整個(gè)匹配模式進(jìn)行分組,默認(rèn)情況下,每個(gè)分組會(huì)自動(dòng)擁有一個(gè)組號(hào),規(guī)則是,從左到右,以分組的左括號(hào)為標(biāo)志,第一個(gè)出現(xiàn)的分組為組號(hào)1,第二個(gè)為組號(hào)2,以此類推。其中,分組0對(duì)應(yīng)整個(gè)正則表達(dá)式。對(duì)整個(gè)正則匹配模式進(jìn)行了分組以后,就可以進(jìn)一步使用“向后引用”來(lái)重復(fù)搜索前面的某個(gè)分組匹配的文本。例如:1代表分組1匹配的文本,2代表分組2匹配的文本等等我們可以進(jìn)一步修改下代碼,如下所示:

          復(fù)制代碼 代碼如下:
          <?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時(shí)\5分\6秒”;
          print preg_replace($pattern, $replacement, $time);
          if(preg_match($pattern,$time,$arr)){
          echo “<pre>”;
          print_r($arr);
          echo “</pre>”;
          }
          ?>

          注意:

          因?yàn)槭窃陔p引號(hào)中,所以使用分組的時(shí)候應(yīng)該使用兩個(gè)反斜杠,如:\1,而如果在單引號(hào)中,則使用一個(gè)反斜杠就可以了,如:1
          \1用于捕獲分組一種的內(nèi)容:2012,\6用于捕獲分組6中的內(nèi)容          
          執(zhí)行結(jié)果:

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

          復(fù)制代碼 代碼如下:
          Array
          (
          [0] => 2012-06-23 03:30:31
          [1] => 2012
          [2] => 06
          [3] => 23
          [4] => 03
          [5] => 30
          [6] => 31
          )
          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)