1--TEST--
2Test is_string() function
3--FILE--
4<?php
5echo "*** Testing is_string() with valid string values ***\n";
6// different valid strings
7
8/* string created using Heredoc (<<<) */
9$heredoc_string = <<<EOT
10This is string defined
11using heredoc.
12EOT;
13/* heredoc string with only numerics */
14$heredoc_numeric_string = <<<EOT
15123456 3993
164849 string
17EOT;
18/* null heardoc string */
19$heredoc_empty_string = <<<EOT
20EOT;
21$heredoc_null_string = <<<EOT
22NULL
23EOT;
24
25$strings = array(
26  "",
27  " ",
28  '',
29  ' ',
30  "string",
31  'string',
32  "NULL",
33  'null',
34  "FALSE",
35  'true',
36  "\x0b",
37  "\0",
38  '\0',
39  '\060',
40  "\070",
41  "0x55F",
42  "055",
43  "@#$#$%%$^^$%^%^$^&",
44  $heredoc_string,
45  $heredoc_numeric_string,
46  $heredoc_empty_string,
47  $heredoc_null_string
48);
49/* loop to check that is_string() recognizes different
50   strings, expected output bool(true) */
51$loop_counter = 1;
52foreach ($strings as $string ) {
53  echo "-- Iteration $loop_counter --\n"; $loop_counter++;
54  var_dump( is_string($string) );
55}
56
57echo "\n*** Testing is_string() on non string values ***\n";
58
59// get a resource type variable
60$fp = fopen (__FILE__, "r");
61$dfp = opendir ( __DIR__ );
62
63// unset vars
64$unset_string1 = "string";
65$unset_string2 = 'string';
66$unset_heredoc = <<<EOT
67this is heredoc string
68EOT;
69// unset the vars
70unset($unset_string1, $unset_string2, $unset_heredoc);
71
72// other types in a array
73$not_strings = array (
74  /* integers */
75  0,
76  1,
77  -1,
78  -0,
79  543915,
80  -5322,
81  0x0,
82  0x1,
83  0x55F,
84  -0xCCF,
85  0123,
86  -0654,
87  00,
88  01,
89
90  /* floats */
91  0.0,
92  1.0,
93  -1.0,
94  10.0000000000000000005,
95  .5e6,
96  -.5E7,
97  .5E+8,
98  -.5e+90,
99  1e5,
100  -1e5,
101  1E5,
102  -1E7,
103
104  /* objects */
105  new stdclass,
106
107  /* resources */
108  $fp,
109  $dfp,
110
111  /* arrays */
112  array(),
113  array(0),
114  array(1),
115  array(NULL),
116  array(null),
117  array("string"),
118  array(true),
119  array(TRUE),
120  array(false),
121  array(FALSE),
122  array(1,2,3,4),
123  array(1 => "One", "two" => 2),
124
125  /* undefined and unset vars */
126  @$unset_string1,
127  @$unset_string2,
128  @$unset_heredoc,
129  @$undefined_var
130);
131/* loop through the $not_strings to see working of
132   is_string() on non string types, expected output bool(false) */
133$loop_counter = 1;
134foreach ($not_strings as $type ) {
135  echo "-- Iteration $loop_counter --\n"; $loop_counter++;
136  var_dump( is_string($type) );
137}
138
139echo "Done\n";
140
141// close the resources used
142fclose($fp);
143closedir($dfp);
144
145?>
146--EXPECT--
147*** Testing is_string() with valid string values ***
148-- Iteration 1 --
149bool(true)
150-- Iteration 2 --
151bool(true)
152-- Iteration 3 --
153bool(true)
154-- Iteration 4 --
155bool(true)
156-- Iteration 5 --
157bool(true)
158-- Iteration 6 --
159bool(true)
160-- Iteration 7 --
161bool(true)
162-- Iteration 8 --
163bool(true)
164-- Iteration 9 --
165bool(true)
166-- Iteration 10 --
167bool(true)
168-- Iteration 11 --
169bool(true)
170-- Iteration 12 --
171bool(true)
172-- Iteration 13 --
173bool(true)
174-- Iteration 14 --
175bool(true)
176-- Iteration 15 --
177bool(true)
178-- Iteration 16 --
179bool(true)
180-- Iteration 17 --
181bool(true)
182-- Iteration 18 --
183bool(true)
184-- Iteration 19 --
185bool(true)
186-- Iteration 20 --
187bool(true)
188-- Iteration 21 --
189bool(true)
190-- Iteration 22 --
191bool(true)
192
193*** Testing is_string() on non string values ***
194-- Iteration 1 --
195bool(false)
196-- Iteration 2 --
197bool(false)
198-- Iteration 3 --
199bool(false)
200-- Iteration 4 --
201bool(false)
202-- Iteration 5 --
203bool(false)
204-- Iteration 6 --
205bool(false)
206-- Iteration 7 --
207bool(false)
208-- Iteration 8 --
209bool(false)
210-- Iteration 9 --
211bool(false)
212-- Iteration 10 --
213bool(false)
214-- Iteration 11 --
215bool(false)
216-- Iteration 12 --
217bool(false)
218-- Iteration 13 --
219bool(false)
220-- Iteration 14 --
221bool(false)
222-- Iteration 15 --
223bool(false)
224-- Iteration 16 --
225bool(false)
226-- Iteration 17 --
227bool(false)
228-- Iteration 18 --
229bool(false)
230-- Iteration 19 --
231bool(false)
232-- Iteration 20 --
233bool(false)
234-- Iteration 21 --
235bool(false)
236-- Iteration 22 --
237bool(false)
238-- Iteration 23 --
239bool(false)
240-- Iteration 24 --
241bool(false)
242-- Iteration 25 --
243bool(false)
244-- Iteration 26 --
245bool(false)
246-- Iteration 27 --
247bool(false)
248-- Iteration 28 --
249bool(false)
250-- Iteration 29 --
251bool(false)
252-- Iteration 30 --
253bool(false)
254-- Iteration 31 --
255bool(false)
256-- Iteration 32 --
257bool(false)
258-- Iteration 33 --
259bool(false)
260-- Iteration 34 --
261bool(false)
262-- Iteration 35 --
263bool(false)
264-- Iteration 36 --
265bool(false)
266-- Iteration 37 --
267bool(false)
268-- Iteration 38 --
269bool(false)
270-- Iteration 39 --
271bool(false)
272-- Iteration 40 --
273bool(false)
274-- Iteration 41 --
275bool(false)
276-- Iteration 42 --
277bool(false)
278-- Iteration 43 --
279bool(false)
280-- Iteration 44 --
281bool(false)
282-- Iteration 45 --
283bool(false)
284Done
285