xref: /PHP-8.3/ext/pcre/tests/marks.phpt (revision f8d79582)
1--TEST--
2Test support for PCRE marks
3--FILE--
4<?php
5
6$regex = <<<'REGEX'
7/
8    _ (a) (*MARK:A_MARK) _
9  | _ (b) _
10  | _ (c) (*MARK:C_MARK) _
11  | _ (d) _
12/x
13REGEX;
14
15var_dump(preg_match($regex, '_c_', $matches));
16var_dump($matches);
17
18var_dump(preg_match_all($regex, '_a__b__c__d_', $matches, PREG_PATTERN_ORDER));
19var_dump($matches);
20
21var_dump(preg_match_all($regex, '_a__b__c__d_', $matches, PREG_SET_ORDER));
22var_dump($matches);
23
24var_dump(preg_replace_callback($regex, function($matches) {
25    var_dump($matches);
26    return $matches[0];
27}, '_a__b__c__d_'));
28
29?>
30--EXPECT--
31int(1)
32array(5) {
33  [0]=>
34  string(3) "_c_"
35  [1]=>
36  string(0) ""
37  [2]=>
38  string(0) ""
39  [3]=>
40  string(1) "c"
41  ["MARK"]=>
42  string(6) "C_MARK"
43}
44int(4)
45array(6) {
46  [0]=>
47  array(4) {
48    [0]=>
49    string(3) "_a_"
50    [1]=>
51    string(3) "_b_"
52    [2]=>
53    string(3) "_c_"
54    [3]=>
55    string(3) "_d_"
56  }
57  [1]=>
58  array(4) {
59    [0]=>
60    string(1) "a"
61    [1]=>
62    string(0) ""
63    [2]=>
64    string(0) ""
65    [3]=>
66    string(0) ""
67  }
68  [2]=>
69  array(4) {
70    [0]=>
71    string(0) ""
72    [1]=>
73    string(1) "b"
74    [2]=>
75    string(0) ""
76    [3]=>
77    string(0) ""
78  }
79  [3]=>
80  array(4) {
81    [0]=>
82    string(0) ""
83    [1]=>
84    string(0) ""
85    [2]=>
86    string(1) "c"
87    [3]=>
88    string(0) ""
89  }
90  [4]=>
91  array(4) {
92    [0]=>
93    string(0) ""
94    [1]=>
95    string(0) ""
96    [2]=>
97    string(0) ""
98    [3]=>
99    string(1) "d"
100  }
101  ["MARK"]=>
102  array(2) {
103    [0]=>
104    string(6) "A_MARK"
105    [2]=>
106    string(6) "C_MARK"
107  }
108}
109int(4)
110array(4) {
111  [0]=>
112  array(3) {
113    [0]=>
114    string(3) "_a_"
115    [1]=>
116    string(1) "a"
117    ["MARK"]=>
118    string(6) "A_MARK"
119  }
120  [1]=>
121  array(3) {
122    [0]=>
123    string(3) "_b_"
124    [1]=>
125    string(0) ""
126    [2]=>
127    string(1) "b"
128  }
129  [2]=>
130  array(5) {
131    [0]=>
132    string(3) "_c_"
133    [1]=>
134    string(0) ""
135    [2]=>
136    string(0) ""
137    [3]=>
138    string(1) "c"
139    ["MARK"]=>
140    string(6) "C_MARK"
141  }
142  [3]=>
143  array(5) {
144    [0]=>
145    string(3) "_d_"
146    [1]=>
147    string(0) ""
148    [2]=>
149    string(0) ""
150    [3]=>
151    string(0) ""
152    [4]=>
153    string(1) "d"
154  }
155}
156array(3) {
157  [0]=>
158  string(3) "_a_"
159  [1]=>
160  string(1) "a"
161  ["MARK"]=>
162  string(6) "A_MARK"
163}
164array(3) {
165  [0]=>
166  string(3) "_b_"
167  [1]=>
168  string(0) ""
169  [2]=>
170  string(1) "b"
171}
172array(5) {
173  [0]=>
174  string(3) "_c_"
175  [1]=>
176  string(0) ""
177  [2]=>
178  string(0) ""
179  [3]=>
180  string(1) "c"
181  ["MARK"]=>
182  string(6) "C_MARK"
183}
184array(5) {
185  [0]=>
186  string(3) "_d_"
187  [1]=>
188  string(0) ""
189  [2]=>
190  string(0) ""
191  [3]=>
192  string(0) ""
193  [4]=>
194  string(1) "d"
195}
196string(12) "_a__b__c__d_"
197