程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中preg正則函數使用

php中preg正則函數使用

編輯:關於PHP編程

php中preg正則函數使用


1.preg_match和preg_match_all的區別
preg_match和 preg_match_all區別是preg_match只匹配一次。而preg_match_all全部匹配,直到字符串結束。例:
 string 'abcde' (length=5)

array (size=1)
  0 =>
    array (size=3)
      0 => string 'abcde' (length=5)
      1 => string 'abcde' (length=5)
      2 => string 'abcde' (length=5)
 */
?>
2.貪婪模式和非貪婪模式的區別
如:String str="abcaxc";
  Patter p="ab*c";
貪婪匹配:正則表達式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字符串str,結果就是匹配到:abcaxc(ab*c)。
非貪婪匹配:就是匹配到結果就好,較少的匹配字符。如上面使用模式p匹配字符串str,結果就是匹配到:abc(ab*c)。
例:
 string 'http://www.baidu/.com?url=www.sina.com' (length=38)
  1 => string '//www.baidu/.com?url=www.sina.' (length=30)

array (size=2)
  0 => string 'http://www.baidu/.com' (length=21)
  1 => string '//www.baidu/.' (length=13)
 */
?>
3.preg_match_all參數PREG_PATTERN_ORDER(默認)和PREG_SET_ORDER的區別
]+>(.*)]+>|U",
    "start: this is a testend",
    $out1);
var_dump($out1);

echo('PREG_SET_ORDER');
preg_match_all("|<[^>]+>(.*)]+>|U",
    "start: this is a testend",
    $out2, PREG_SET_ORDER);
var_dump($out2);

/*
PREG_PATTERN_ORDER
array (size=2)
  0 =>
    array (size=3)
      0 => string 'start: ' (length=14)
      1 => string 'this is a test' (length=21)
      2 => string 'end' (length=10)
  1 =>
    array (size=3)
      0 => string 'start: ' (length=7)
      1 => string 'this is a test' (length=14)
      2 => string 'end' (length=3)

PREG_SET_ORDER
array (size=3)
  0 =>
    array (size=2)
      0 => string 'start: ' (length=14)
      1 => string 'start: ' (length=7)
  1 =>
    array (size=2)
      0 => string 'this is a test' (length=21)
      1 => string 'this is a test' (length=14)
  2 =>
    array (size=2)
      0 => string 'end' (length=10)
      1 => string 'end' (length=3)
 */
?>

延伸閱讀:preg_match_all使用實例

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved