1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
--TEST--
Test mb_stripos() function : basic functionality
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in this build");
?>
--FILE--
<?php
/* Prototype : int mb_stripos(string haystack, string needle [, int offset [, string encoding]])
* Description: Finds position of first occurrence of a string within another, case insensitive
* Source code: ext/mbstring/mbstring.c
* Alias to functions:
*/
/*
* Test basic functionality of mb_stripos with ASCII and multibyte characters
*/
echo "*** Testing mb_stripos() : basic functionality***\n";
mb_internal_encoding('UTF-8');
//ascii strings
$ascii_haystacks = array(
b'abc defabc def',
b'ABC DEFABC DEF',
b'Abc dEFaBC Def',
);
$ascii_needles = array(
// 4 good ones
b'DE',
b'de',
b'De',
b'dE',
//flag a swap between good and bad
'!',
// 4 bad ones
b'df',
b'Df',
b'dF',
b'DF'
);
//greek strings in UTF-8
$greek_lower = base64_decode('zrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4TPhc+Gz4fPiM+J');
$greek_upper = base64_decode('zpHOks6TzpTOlc6WzpfOmM6ZzprOm86czp3Ons6fzqDOoc6jzqTOpc6mzqfOqM6p');
$greek_mixed = base64_decode('zrHOss6TzpTOlc6WzpfOmM65zrrOu868zr3Ovs6fzqDOoc6jzqTOpc+Gz4fPiM+J');
$greek_haystacks = array($greek_lower, $greek_upper, $greek_mixed);
$greek_nlower = base64_decode('zrzOvc6+zr8=');
$greek_nupper = base64_decode('zpzOnc6ezp8=');
$greek_nmixed1 = base64_decode('zpzOnc6+zr8=');
$greek_nmixed2 = base64_decode('zrzOvc6+zp8=');
$greek_blower = base64_decode('zpzOns6f');
$greek_bupper = base64_decode('zrzOvs6/');
$greek_bmixed1 = base64_decode('zpzOvs6/');
$greek_bmixed2 = base64_decode('zrzOvs6f');
$greek_needles = array(
// 4 good ones
$greek_nlower, $greek_nupper, $greek_nmixed1, $greek_nmixed2,
'!', // used to flag a swap between good and bad
// 4 bad ones
$greek_blower, $greek_bupper, $greek_bmixed1, $greek_bmixed2,
);
// try the basic options
echo "\n -- ASCII Strings, needle should be found --\n";
foreach ($ascii_needles as $needle) {
if ($needle == '!') {
echo "\n -- ASCII Strings, needle should not be found --\n";
}
else {
foreach ($ascii_haystacks as $haystack) {
var_dump(mb_stripos($haystack, $needle));
}
}
}
echo "\n -- Greek Strings, needle should be found --\n";
foreach ($greek_needles as $needle) {
if ($needle == '!') {
echo "\n -- ASCII Strings, needle should not be found --\n";
}
else {
foreach ($greek_haystacks as $haystack) {
var_dump(mb_stripos($haystack, $needle));
}
}
}
echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : basic functionality***
-- ASCII Strings, needle should be found --
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
-- ASCII Strings, needle should not be found --
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
-- Greek Strings, needle should be found --
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
-- ASCII Strings, needle should not be found --
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
Done
|