1--TEST--
2Test strrchr() function : usage variations - single quoted strings
3--FILE--
4<?php
5/* Prototype  : string strrchr(string $haystack, string $needle);
6 * Description: Finds the last occurrence of a character in a string.
7 * Source code: ext/standard/string.c
8*/
9
10/* Test strrchr() function by passing various single quoted strings to 'haystack' & 'needle' */
11
12echo "*** Testing strrchr() function: with various single quoted strings ***";
13$haystack = 'Hello,\t\n\0\n  $&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 ';
14$needle = array(
15  //regular strings
16  'l',
17  'L',
18  'HELLO',
19  'hEllo',
20
21  //escape characters
22  '\t',
23  '\T',
24  '     ',
25  '\n',
26  '\N',
27  '
28',  //new line
29
30  //nulls
31  '\0',
32  NULL,
33  null,
34
35  //boolean false
36  FALSE,
37  false,
38
39  //empty string
40  '',
41
42  //special chars
43  ' ',
44  '$',
45  ' $',
46  '&',
47  '!#',
48  '%\o',
49  '\o,',
50  '()',
51  '*+',
52  '+',
53  '-',
54  '.',
55  '.;',
56  ':;',
57  ';',
58  '<=>',
59  '>',
60  '=>',
61  '?',
62  '@',
63  '@hEllo',
64
65  '12345', //decimal numeric string
66  '\x23',  //hexadecimal numeric string
67  '#',  //hexadecimal numeric string
68  '\101',  //octal numeric string
69  'A',
70  '456HEE',  //numerics + chars
71  42, //needle as int(ASCII value of '*')
72  $haystack  //haystack as needle
73);
74
75/* loop through to get the position of the needle in haystack string */
76$count = 1;
77for($index=0; $index<count($needle); $index++) {
78  echo "\n-- Iteration $count --\n";
79  var_dump( strrchr($haystack, $needle[$index]) );
80  $count ++;
81}
82echo "*** Done ***";
83?>
84--EXPECTF--
85*** Testing strrchr() function: with various single quoted strings ***
86-- Iteration 1 --
87string(22) "lo123456he \x234 \101 "
88
89-- Iteration 2 --
90bool(false)
91
92-- Iteration 3 --
93string(63) "Hello,\t\n\0\n  $&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
94
95-- Iteration 4 --
96string(14) "he \x234 \101 "
97
98-- Iteration 5 --
99string(5) "\101 "
100
101-- Iteration 6 --
102string(5) "\101 "
103
104-- Iteration 7 --
105string(1) " "
106
107-- Iteration 8 --
108string(5) "\101 "
109
110-- Iteration 9 --
111string(5) "\101 "
112
113-- Iteration 10 --
114bool(false)
115
116-- Iteration 11 --
117string(5) "\101 "
118
119-- Iteration 12 --
120bool(false)
121
122-- Iteration 13 --
123bool(false)
124
125-- Iteration 14 --
126bool(false)
127
128-- Iteration 15 --
129bool(false)
130
131-- Iteration 16 --
132bool(false)
133
134-- Iteration 17 --
135string(1) " "
136
137-- Iteration 18 --
138string(47) "$&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
139
140-- Iteration 19 --
141string(1) " "
142
143-- Iteration 20 --
144string(46) "&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
145
146-- Iteration 21 --
147string(45) "!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
148
149-- Iteration 22 --
150string(43) "%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
151
152-- Iteration 23 --
153string(5) "\101 "
154
155-- Iteration 24 --
156string(39) "()*+-./:;<=>?@hello123456he \x234 \101 "
157
158-- Iteration 25 --
159string(37) "*+-./:;<=>?@hello123456he \x234 \101 "
160
161-- Iteration 26 --
162string(36) "+-./:;<=>?@hello123456he \x234 \101 "
163
164-- Iteration 27 --
165string(35) "-./:;<=>?@hello123456he \x234 \101 "
166
167-- Iteration 28 --
168string(34) "./:;<=>?@hello123456he \x234 \101 "
169
170-- Iteration 29 --
171string(34) "./:;<=>?@hello123456he \x234 \101 "
172
173-- Iteration 30 --
174string(32) ":;<=>?@hello123456he \x234 \101 "
175
176-- Iteration 31 --
177string(31) ";<=>?@hello123456he \x234 \101 "
178
179-- Iteration 32 --
180string(30) "<=>?@hello123456he \x234 \101 "
181
182-- Iteration 33 --
183string(28) ">?@hello123456he \x234 \101 "
184
185-- Iteration 34 --
186string(29) "=>?@hello123456he \x234 \101 "
187
188-- Iteration 35 --
189string(27) "?@hello123456he \x234 \101 "
190
191-- Iteration 36 --
192string(26) "@hello123456he \x234 \101 "
193
194-- Iteration 37 --
195string(26) "@hello123456he \x234 \101 "
196
197-- Iteration 38 --
198string(2) "1 "
199
200-- Iteration 39 --
201string(5) "\101 "
202
203-- Iteration 40 --
204string(44) "#%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
205
206-- Iteration 41 --
207string(5) "\101 "
208
209-- Iteration 42 --
210bool(false)
211
212-- Iteration 43 --
213string(7) "4 \101 "
214
215-- Iteration 44 --
216string(37) "*+-./:;<=>?@hello123456he \x234 \101 "
217
218-- Iteration 45 --
219string(63) "Hello,\t\n\0\n  $&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 "
220*** Done ***
221