1--TEST--
2Test mb_stripos() function : basic functionality
3--SKIPIF--
4<?php
5extension_loaded('mbstring') or die('skip');
6function_exists('mb_stripos') or die("skip mb_stripos() is not available in this build");
7?>
8--FILE--
9<?php
10/* Prototype  : int mb_stripos(string haystack, string needle [, int offset [, string encoding]])
11 * Description: Finds position of first occurrence of a string within another, case insensitive
12 * Source code: ext/mbstring/mbstring.c
13 * Alias to functions:
14 */
15
16/*
17 * Test basic functionality of mb_stripos with ASCII and multibyte characters
18 */
19
20echo "*** Testing mb_stripos() : basic functionality***\n";
21
22mb_internal_encoding('UTF-8');
23
24//ascii strings
25$ascii_haystacks = array(
26   b'abc defabc   def',
27   b'ABC DEFABC   DEF',
28   b'Abc dEFaBC   Def',
29);
30
31$ascii_needles = array(
32   // 4 good ones
33   b'DE',
34   b'de',
35   b'De',
36   b'dE',
37);
38
39//greek strings in UTF-8
40$greek_lower = base64_decode('zrrOu868zr3Ovs6/z4DPgSDOus67zrzOvc6+zr/PgA==');
41$greek_upper = base64_decode('zprOm86czp3Ons6fzqDOoSDOms6bzpzOnc6ezp/OoA==');
42$greek_mixed = base64_decode('zrrOu868zr3Ovs6fzqDOoSDOus67zpzOnc6+zr/OoA==');
43$greek_haystacks = array($greek_lower, $greek_upper, $greek_mixed);
44
45$greek_nlower = base64_decode('zrzOvc6+zr8=');
46$greek_nupper = base64_decode('zpzOnc6ezp8=');
47$greek_nmixed1 = base64_decode('zpzOnc6+zr8=');
48$greek_nmixed2 = base64_decode('zrzOvc6+zp8=');
49
50$greek_needles = array(
51   // 4 good ones
52   $greek_nlower, $greek_nupper, $greek_nmixed1, $greek_nmixed2,
53);
54
55// try the basic options
56echo "\n -- ASCII Strings --\n";
57foreach ($ascii_needles as $needle) {
58   foreach ($ascii_haystacks as $haystack) {
59      var_dump(mb_stripos($haystack, $needle));
60      var_dump(mb_stripos($haystack, $needle, 6));
61   }
62}
63
64echo "\n -- Greek Strings --\n";
65foreach ($greek_needles as $needle) {
66   foreach ($greek_haystacks as $haystack) {
67      var_dump(mb_stripos($haystack, $needle));
68      var_dump(mb_stripos($haystack, $needle, 4));
69   }
70}
71
72echo "Done";
73?>
74--EXPECTF--
75*** Testing mb_stripos() : basic functionality***
76
77 -- ASCII Strings --
78int(4)
79int(13)
80int(4)
81int(13)
82int(4)
83int(13)
84int(4)
85int(13)
86int(4)
87int(13)
88int(4)
89int(13)
90int(4)
91int(13)
92int(4)
93int(13)
94int(4)
95int(13)
96int(4)
97int(13)
98int(4)
99int(13)
100int(4)
101int(13)
102
103 -- Greek Strings --
104int(2)
105int(11)
106int(2)
107int(11)
108int(2)
109int(11)
110int(2)
111int(11)
112int(2)
113int(11)
114int(2)
115int(11)
116int(2)
117int(11)
118int(2)
119int(11)
120int(2)
121int(11)
122int(2)
123int(11)
124int(2)
125int(11)
126int(2)
127int(11)
128Done
129