1--TEST--
2Test mb_stristr() function : basic functionality
3--SKIPIF--
4<?php
5extension_loaded('mbstring') or die('skip');
6function_exists('mb_stristr') or die("skip mb_stristr() is not available in this build");
7?>
8--FILE--
9<?php
10echo "*** Testing mb_stristr() : basic functionality ***\n";
11
12mb_internal_encoding('UTF-8');
13
14$string_ascii = 'abcdef';
15$needle_ascii_upper = "BCD";
16$needle_ascii_mixed = "bCd";
17$needle_ascii_lower = "bcd";
18
19//Greek string in lower case UTF-8
20$string_mb = base64_decode('zrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4TPhc+Gz4fPiM+J');
21$needle_mb_upper = base64_decode('zpzOnc6ezp8=');
22$needle_mb_lower = base64_decode('zrzOvc6+zr8=');
23$needle_mb_mixed = base64_decode('zpzOnc6+zr8=');
24
25echo "\n-- ASCII string: needle exists --\n";
26var_dump(bin2hex(mb_stristr($string_ascii, $needle_ascii_upper, false, 'ISO-8859-1')));
27var_dump(bin2hex(mb_stristr($string_ascii, $needle_ascii_lower)));
28var_dump(bin2hex(mb_stristr($string_ascii, $needle_ascii_mixed, true)));
29
30
31echo "\n-- ASCII string: needle doesn't exist --\n";
32var_dump(mb_stristr($string_ascii, '123'));
33
34echo "\n-- Multibyte string: needle exists --\n";
35var_dump(bin2hex(mb_stristr($string_mb, $needle_mb_upper)));
36var_dump(bin2hex(mb_stristr($string_mb, $needle_mb_lower, false, 'utf-8')));
37var_dump(bin2hex(mb_stristr($string_mb, $needle_mb_mixed, true)));
38
39
40echo "\n-- Multibyte string: needle doesn't exist --\n";
41$needle2 = base64_decode("zrzOvs6/");
42var_dump(mb_stristr($string_mb, $needle2));
43
44?>
45--EXPECT--
46*** Testing mb_stristr() : basic functionality ***
47
48-- ASCII string: needle exists --
49string(10) "6263646566"
50string(10) "6263646566"
51string(2) "61"
52
53-- ASCII string: needle doesn't exist --
54bool(false)
55
56-- Multibyte string: needle exists --
57string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89"
58string(52) "cebccebdcebecebfcf80cf81cf83cf84cf85cf86cf87cf88cf89"
59string(44) "ceb1ceb2ceb3ceb4ceb5ceb6ceb7ceb8ceb9cebacebb"
60
61-- Multibyte string: needle doesn't exist --
62bool(false)
63