xref: /PHP-5.4/ext/pcre/tests/004.phpt (revision 0df2a37d)
1--TEST--
2abusing pcre
3--FILE--
4<?php
5
6var_dump(preg_match_all('/((?:(?:unsigned|struct)\s+)?\w+)(?:\s*(\*+)\s+|\s+(\**))(\w+(?:\[\s*\w*\s*\])?)\s*(?:(=)[^,;]+)?((?:\s*,\s*\**\s*\w+(?:\[\s*\w*\s*\])?\s*(?:=[^,;]+)?)*)\s*;/S', 'unsigned int xpto = 124; short a, b;', $m, PREG_SET_ORDER));
7var_dump($m);
8
9var_dump(preg_match_all('/(?:\([^)]+\))?(&?)([\w>.()-]+(?:\[\w+\])?)\s*,?((?:\)*\s*=)?)/S', '&a, b, &c', $m, PREG_SET_ORDER));
10var_dump($m);
11
12var_dump(preg_match_all('/zend_parse_parameters(?:_ex\s*\([^,]+,[^,]+|\s*\([^,]+),\s*"([^"]*)"\s*,\s*([^{;]*)/S', 'zend_parse_parameters( 0, "addd|s/", a, b, &c);', $m, PREG_SET_ORDER | PREG_OFFSET_CAPTURE));
13var_dump($m);
14
15var_dump(preg_replace(array('@//.*@S', '@/\*.*\*/@SsUe'), array('', 'preg_replace("/[^\r\n]+/S", "", \'$0\')'), "hello\n//x \n/*\ns\n*/"));
16
17var_dump(preg_split('/PHP_(?:NAMED_)?(?:FUNCTION|METHOD)\s*\((\w+(?:,\s*\w+)?)\)/S', "PHP_FUNCTION(s, preg_match)\n{\nlalala", -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE));
18?>
19--EXPECT--
20int(2)
21array(2) {
22  [0]=>
23  array(7) {
24    [0]=>
25    string(24) "unsigned int xpto = 124;"
26    [1]=>
27    string(12) "unsigned int"
28    [2]=>
29    string(0) ""
30    [3]=>
31    string(0) ""
32    [4]=>
33    string(4) "xpto"
34    [5]=>
35    string(1) "="
36    [6]=>
37    string(0) ""
38  }
39  [1]=>
40  array(7) {
41    [0]=>
42    string(11) "short a, b;"
43    [1]=>
44    string(5) "short"
45    [2]=>
46    string(0) ""
47    [3]=>
48    string(0) ""
49    [4]=>
50    string(1) "a"
51    [5]=>
52    string(0) ""
53    [6]=>
54    string(3) ", b"
55  }
56}
57int(3)
58array(3) {
59  [0]=>
60  array(4) {
61    [0]=>
62    string(3) "&a,"
63    [1]=>
64    string(1) "&"
65    [2]=>
66    string(1) "a"
67    [3]=>
68    string(0) ""
69  }
70  [1]=>
71  array(4) {
72    [0]=>
73    string(2) "b,"
74    [1]=>
75    string(0) ""
76    [2]=>
77    string(1) "b"
78    [3]=>
79    string(0) ""
80  }
81  [2]=>
82  array(4) {
83    [0]=>
84    string(2) "&c"
85    [1]=>
86    string(1) "&"
87    [2]=>
88    string(1) "c"
89    [3]=>
90    string(0) ""
91  }
92}
93int(1)
94array(1) {
95  [0]=>
96  array(3) {
97    [0]=>
98    array(2) {
99      [0]=>
100      string(46) "zend_parse_parameters( 0, "addd|s/", a, b, &c)"
101      [1]=>
102      int(0)
103    }
104    [1]=>
105    array(2) {
106      [0]=>
107      string(7) "addd|s/"
108      [1]=>
109      int(27)
110    }
111    [2]=>
112    array(2) {
113      [0]=>
114      string(9) "a, b, &c)"
115      [1]=>
116      int(37)
117    }
118  }
119}
120string(9) "hello
121
122
123
124"
125array(3) {
126  [0]=>
127  array(2) {
128    [0]=>
129    string(0) ""
130    [1]=>
131    int(0)
132  }
133  [1]=>
134  array(2) {
135    [0]=>
136    string(13) "s, preg_match"
137    [1]=>
138    int(13)
139  }
140  [2]=>
141  array(2) {
142    [0]=>
143    string(9) "
144{
145lalala"
146    [1]=>
147    int(27)
148  }
149}
150