1--TEST--
2Test strtok() function : usage variations - invalid escape sequences as tokens
3--FILE--
4<?php
5/* Prototype  : string strtok ( str $str, str $token )
6 * Description: splits a string (str) into smaller strings (tokens), with each token being delimited by any character from token
7 * Source code: ext/standard/string.c
8*/
9
10/*
11 * Testing strtok() : with invalid escape sequences in token
12*/
13
14echo "*** Testing strtok() : with invalid escape sequences in token ***\n";
15
16// defining arrays for input strings and tokens
17$string_array = array(
18 		       "khellok worldk",
19 		       "\khello\k world\k",
20 		       "/khello\k world/k",
21 		       "/hellok/ world"
22 		     );
23$token_array = array(
24		       "k",
25		       "/ ",
26		       "/k",
27		       "\k",
28		       "\\\\\\\k\h\\e\l\o\w\r\l\d"
29 		    );
30
31// loop through each element of the array and check the working of strtok()
32// when supplied with different string and token values
33
34$counter =1;
35foreach( $string_array as $string )  {
36  echo "\n--- Iteration $counter ---\n";
37  foreach( $token_array as $token )  {
38    var_dump( strtok($string, $token) );
39    for( $count = 1; $count <=3; $count++ )  {
40      var_dump( strtok($token) );
41    }
42    echo "\n";
43  }
44  $counter++;
45}
46
47
48echo "Done\n";
49?>
50--EXPECTF--
51*** Testing strtok() : with invalid escape sequences in token ***
52
53--- Iteration 1 ---
54string(5) "hello"
55string(6) " world"
56bool(false)
57bool(false)
58
59string(7) "khellok"
60string(6) "worldk"
61bool(false)
62bool(false)
63
64string(5) "hello"
65string(6) " world"
66bool(false)
67bool(false)
68
69string(5) "hello"
70string(6) " world"
71bool(false)
72bool(false)
73
74string(1) " "
75string(1) "r"
76bool(false)
77bool(false)
78
79
80--- Iteration 2 ---
81string(1) "\"
82string(6) "hello\"
83string(7) " world\"
84bool(false)
85
86string(9) "\khello\k"
87string(7) "world\k"
88bool(false)
89bool(false)
90
91string(1) "\"
92string(6) "hello\"
93string(7) " world\"
94bool(false)
95
96string(5) "hello"
97string(6) " world"
98bool(false)
99bool(false)
100
101string(1) " "
102string(1) "r"
103bool(false)
104bool(false)
105
106
107--- Iteration 3 ---
108string(1) "/"
109string(6) "hello\"
110string(7) " world/"
111bool(false)
112
113string(8) "khello\k"
114string(5) "world"
115string(1) "k"
116bool(false)
117
118string(6) "hello\"
119string(6) " world"
120bool(false)
121bool(false)
122
123string(1) "/"
124string(5) "hello"
125string(7) " world/"
126bool(false)
127
128string(1) "/"
129string(1) " "
130string(1) "r"
131string(1) "/"
132
133
134--- Iteration 4 ---
135string(6) "/hello"
136string(7) "/ world"
137bool(false)
138bool(false)
139
140string(6) "hellok"
141string(5) "world"
142bool(false)
143bool(false)
144
145string(5) "hello"
146string(6) " world"
147bool(false)
148bool(false)
149
150string(6) "/hello"
151string(7) "/ world"
152bool(false)
153bool(false)
154
155string(1) "/"
156string(2) "/ "
157string(1) "r"
158bool(false)
159
160Done
161