preg_match 与 preg_match_all

案例一:

 1 <?php 

 2 

 3 $str = 'abcdef123456';

 4 preg_match('/[a-z1-9]+/', $str, $res);

 5 var_dump($res);

 6 

 7 preg_match('/([a-z1-9])+/', $str, $res);

 8 var_dump($res);

 9 

10 preg_match('/(\w)+/', $str, $res);

11 var_dump($res);

12 -------------------------------------------以上3个正则分别输出:

13 array(1) {

14   [0]=>

15   string(12) "abcdef123456"

16 }

17 array(2) {

18   [0]=>

19   string(12) "abcdef123456"

20   [1]=>

21   string(1) "6"

22 }

23 array(2) {

24   [0]=>

25   string(12) "abcdef123456"

26   [1]=>

27   string(1) "6"

28 }

29 -------------------------------------------

30 

31 

32 preg_match_all('/[a-z1-9]+/', $str, $res);

33 var_dump($res);

34 

35 preg_match_all('/([a-z1-9])+/', $str, $res);

36 var_dump($res);

37 

38 preg_match_all('/(\w)+/', $str, $res);

39 var_dump($res);

40 -------------------------------------------以上3个正则分别输出

41 array(1) {

42   [0]=>

43   array(1) {

44     [0]=>

45     string(12) "abcdef123456"

46   }

47 }

48 array(2) {

49   [0]=>

50   array(1) {

51     [0]=>

52     string(12) "abcdef123456"

53   }

54   [1]=>

55   array(1) {

56     [0]=>

57     string(1) "6"

58   }

59 }

60 array(2) {

61   [0]=>

62   array(1) {

63     [0]=>

64     string(12) "abcdef123456"

65   }

66   [1]=>

67   array(1) {

68     [0]=>

69     string(1) "6"

70   }

71 }

72 -------------------------------------------

73 此处拿preg_match 与 preg_match_all 说明 \w   []  () 不同表达方式下,匹配的结果异同
View Code

 

案例二:

 1 <?php 

 2 

 3 $str = 'qwe.123.asd.456';

 4 preg_match('/([a-z]+)\.([1-9]+)\.([a-z]+)\.([1-9]+)/', $str, $res);

 5 var_dump($res);

 6 

 7 preg_match_all('/([a-z]+)\.([1-9]+)\.([a-z]+)\.([1-9]+)/', $str, $res);

 8 var_dump($res);

 9 -------------------------分别输出

10 

11 array(5) {

12   [0]=>

13   string(15) "qwe.123.asd.456"

14   [1]=>

15   string(3) "qwe"

16   [2]=>

17   string(3) "123"

18   [3]=>

19   string(3) "asd"

20   [4]=>

21   string(3) "456"

22 }

23 array(5) {

24   [0]=>

25   array(1) {

26     [0]=>

27     string(15) "qwe.123.asd.456"

28   }

29   [1]=>

30   array(1) {

31     [0]=>

32     string(3) "qwe"

33   }

34   [2]=>

35   array(1) {

36     [0]=>

37     string(3) "123"

38   }

39   [3]=>

40   array(1) {

41     [0]=>

42     string(3) "asd"

43   }

44   [4]=>

45   array(1) {

46     [0]=>

47     string(3) "456"

48   }

49 }

50 --------------------------

51 

52 

53 $str = 'qwe.123.asd.456';

54 preg_match('/([a-z])+\.([1-9])+\.([a-z])+\.([1-9])+/', $str, $res);

55 var_dump($res);

56 

57 preg_match_all('/([a-z])+\.([1-9])+\.([a-z])+\.([1-9])+/', $str, $res);

58 var_dump($res);

59 ------------------------分别输出

60 

61 array(5) {

62   [0]=>

63   string(15) "qwe.123.asd.456"

64   [1]=>

65   string(1) "e"

66   [2]=>

67   string(1) "3"

68   [3]=>

69   string(1) "d"

70   [4]=>

71   string(1) "6"

72 }

73 array(5) {

74   [0]=>

75   array(1) {

76     [0]=>

77     string(15) "qwe.123.asd.456"

78   }

79   [1]=>

80   array(1) {

81     [0]=>

82     string(1) "e"

83   }

84   [2]=>

85   array(1) {

86     [0]=>

87     string(1) "3"

88   }

89   [3]=>

90   array(1) {

91     [0]=>

92     string(1) "d"

93   }

94   [4]=>

95   array(1) {

96     [0]=>

97     string(1) "6"

98   }

99 }
View Code

 

上面2个案例,是为更好理解第三个案例. 

 

案例三:

preg_match与preg_match_all区别: 前者匹配成功后就放弃后续匹配;  后者第一次匹配成功后,继续匹配到结尾.

preg_match_all涉及2种匹配方式.官方文档解释如下,int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

PREG_PATTERN_ORDER:结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配, 以此类推. 

PREG_SET_ORDER:结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组, 以此类推. 

 1 <?php 

 2 

 3 $str = '111-222;333-444';

 4 preg_match('/([1-9]+)-([1-9]+)/', $str, $res);

 5 var_dump($res);

 6 

 7 

 8 preg_match_all('/([1-9]+)-([1-9]+)/', $str, $res);//默认是PREG_PATTERN_ORDER 方式匹配

 9 var_dump($res);

10 

11 preg_match_all('/([1-9]+)-([1-9]+)/', $str, $res, PREG_SET_ORDER);//再看PREG_SET_ORDER 方式匹配

12 var_dump($res);

13 ---------------------------------以上3个正则输出

14 

15 array(3) {

16   [0]=>

17   string(7) "111-222"

18   [1]=>

19   string(3) "111"

20   [2]=>

21   string(3) "222"

22 }

23 array(3) {

24   [0]=>

25   array(2) {

26     [0]=>

27     string(7) "111-222"

28     [1]=>

29     string(7) "333-444"

30   }

31   [1]=>

32   array(2) {

33     [0]=>

34     string(3) "111"

35     [1]=>

36     string(3) "333"

37   }

38   [2]=>

39   array(2) {

40     [0]=>

41     string(3) "222"

42     [1]=>

43     string(3) "444"

44   }

45 }

46 array(2) {

47   [0]=>

48   array(3) {

49     [0]=>

50     string(7) "111-222"

51     [1]=>

52     string(3) "111"

53     [2]=>

54     string(3) "222"

55   }

56   [1]=>

57   array(3) {

58     [0]=>

59     string(7) "333-444"

60     [1]=>

61     string(3) "333"

62     [2]=>

63     string(3) "444"

64   }

65 }
View Code

 

 

你可能感兴趣的:(match)