mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +02:00
- fix a typo in mb_stripos() that caused segfault.
(noticed by bs@php.net, thanks).
This commit is contained in:
parent
cab531026b
commit
e8741cc4fc
9 changed files with 1221 additions and 2 deletions
|
@ -2236,10 +2236,13 @@ PHP_FUNCTION(mb_stripos)
|
|||
n = -1;
|
||||
offset = 0;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ls", (char **)&haystack.val, (int *)&haystack.len, (char **)needle.val, (int *)&needle.len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ls", (char **)&haystack.val, (int *)&haystack.len, (char **)&needle.val, (int *)&needle.len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
if (needle.len == 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter.");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
n = php_mb_stripos(0, (char *)haystack.val, haystack.len, (char *)needle.val, needle.len, offset, from_encoding TSRMLS_CC);
|
||||
|
||||
if (n >= 0) {
|
||||
|
|
175
ext/mbstring/tests/mb_stripos.phpt
Normal file
175
ext/mbstring/tests/mb_stripos.phpt
Normal file
|
@ -0,0 +1,175 @@
|
|||
--TEST--
|
||||
mb_stripos()
|
||||
--SKIPIF--
|
||||
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
// TODO: Add more encodings
|
||||
|
||||
//$debug=true;
|
||||
ini_set('include_path', dirname(__FILE__));
|
||||
include_once('common.inc');
|
||||
|
||||
|
||||
// Test string
|
||||
$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。';
|
||||
|
||||
// EUC-JP - With encoding parameter
|
||||
mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
|
||||
|
||||
echo "== POSITIVE OFFSET ==\n";
|
||||
print mb_stripos($euc_jp,'日本語', 0, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp, '0', 0, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp, 3, 0, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp, 0, 0, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp,'日本語', 15, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp, '0', 15, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp, 3, 15, 'EUC-JP') . "\n";
|
||||
print mb_stripos($euc_jp, 0, 15, 'EUC-JP') . "\n";
|
||||
|
||||
// Negative offset
|
||||
// Note: PHP Warning - offset is negative.
|
||||
// Note: For offset(-15). It does not return position of latter string. (ie the same result as -50)
|
||||
echo "== NEGATIVE OFFSET ==\n";
|
||||
$r = mb_stripos($euc_jp,'日本語', -15, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp, '0', -15, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp, 3, -15, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp, 0, -15, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp,'日本語', -50, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp, '0', -50, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp, 3, -50, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
$r = mb_stripos($euc_jp, 0, -50, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
|
||||
|
||||
// Out of range - should return false
|
||||
print ("== OUT OF RANGE ==\n");
|
||||
$r = mb_stripos($euc_jp,'日本語', 40, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
|
||||
$r = mb_stripos($euc_jp, '0', 40, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
|
||||
$r = mb_stripos($euc_jp, 3, 40, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
|
||||
$r = mb_stripos($euc_jp, 0, 40, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
|
||||
// Note: Returned NULL string
|
||||
// echo gettype($r). ' val '. $r ."\n";
|
||||
|
||||
|
||||
// Non-existent
|
||||
echo "== NON-EXISTENT ==\n";
|
||||
$r = mb_stripos($euc_jp, '韓国語', 0, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
|
||||
$r = mb_stripos($euc_jp, "\n", 0, 'EUC-JP');
|
||||
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
|
||||
|
||||
|
||||
// EUC-JP - No encoding parameter
|
||||
echo "== NO ENCODING PARAMETER ==\n";
|
||||
mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
|
||||
|
||||
print mb_stripos($euc_jp,'日本語', 0) . "\n";
|
||||
print mb_stripos($euc_jp, '0', 0) . "\n";
|
||||
print mb_stripos($euc_jp, 3, 0) . "\n";
|
||||
print mb_stripos($euc_jp, 0, 0) . "\n";
|
||||
|
||||
$r = mb_stripos($euc_jp,'韓国語', 0);
|
||||
($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
|
||||
$r = mb_stripos($euc_jp,"\n", 0);
|
||||
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
|
||||
|
||||
// EUC-JP - No offset and encoding parameter
|
||||
echo "== NO OFFSET AND ENCODING PARAMETER ==\n";
|
||||
mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
|
||||
|
||||
print mb_stripos($euc_jp,'日本語') . "\n";
|
||||
print mb_stripos($euc_jp, '0') . "\n";
|
||||
print mb_stripos($euc_jp, 3) . "\n";
|
||||
print mb_stripos($euc_jp, 0) . "\n";
|
||||
|
||||
$r = mb_stripos($euc_jp,'韓国語');
|
||||
($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
|
||||
$r = mb_stripos($euc_jp,"\n");
|
||||
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
|
||||
|
||||
|
||||
// Invalid Parameters
|
||||
echo "== INVALID PARAMETER TEST ==\n";
|
||||
|
||||
$r = mb_stripos($euc_jp,'','EUC-JP');
|
||||
($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n");
|
||||
$r = mb_stripos($euc_jp, $t_ary, 'EUC-JP');
|
||||
($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n");
|
||||
$r = mb_stripos($euc_jp, $t_obj, 'EUC-JP');
|
||||
($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n");
|
||||
$r = mb_stripos($euc_jp, $t_obj, 'BAD_ENCODING');
|
||||
($r === FALSE) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n");
|
||||
|
||||
|
||||
?>
|
||||
|
||||
--EXPECT--
|
||||
== POSITIVE OFFSET ==
|
||||
10
|
||||
0
|
||||
3
|
||||
0
|
||||
34
|
||||
30
|
||||
33
|
||||
30
|
||||
== NEGATIVE OFFSET ==
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
ERR: Warning
|
||||
OK_NEGATIVE_OFFSET
|
||||
== OUT OF RANGE ==
|
||||
OK_OUT_RANGE
|
||||
OK_OUT_RANGE
|
||||
OK_OUT_RANGE
|
||||
OK_OUT_RANGE
|
||||
== NON-EXISTENT ==
|
||||
OK_STR
|
||||
OK_NEWLINE
|
||||
== NO ENCODING PARAMETER ==
|
||||
10
|
||||
0
|
||||
3
|
||||
0
|
||||
OK_STR
|
||||
OK_NEWLINE
|
||||
== NO OFFSET AND ENCODING PARAMETER ==
|
||||
10
|
||||
0
|
||||
3
|
||||
0
|
||||
OK_STR
|
||||
OK_NEWLINE
|
||||
== INVALID PARAMETER TEST ==
|
||||
ERR: Warning
|
||||
OK_NULL
|
||||
ERR: Warning
|
||||
OK_ARRAY
|
||||
ERR: Warning
|
||||
OK_OBJECT
|
||||
ERR: Warning
|
||||
OK_BAD_ENCODING
|
||||
|
153
ext/mbstring/tests/mb_stripos_basic.phpt
Normal file
153
ext/mbstring/tests/mb_stripos_basic.phpt
Normal file
|
@ -0,0 +1,153 @@
|
|||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Test basic functionality of mb_stripos with ASCII and multibyte characters
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : basic functionality***\n";
|
||||
|
||||
mb_internal_encoding('UTF-8');
|
||||
|
||||
$string_ascii = 'abc def ABC DEF';
|
||||
//Japanese string in UTF-8
|
||||
$string_mb = '日本語テキストです。0123456789。';
|
||||
|
||||
echo "\n-- ISO-8859-1 string 1 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'd', 0, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 2 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'D', 0, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 3 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'd', 1, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 4 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'D', 1, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 5 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'c', 4, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 6 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'c D', 0, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 7 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'C d', 0, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 8 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'deF', 0, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 9 --\n";
|
||||
var_dump(mb_stripos($string_ascii, '123', 0, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 10 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'c D', 1, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 11 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'C d', 1, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 12 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'deF', 1, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 13 --\n";
|
||||
var_dump(mb_stripos($string_ascii, '123', 1, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 14 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'c D', 4, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 15 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'C d', 4, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 16 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'deF', 4, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 17 --\n";
|
||||
var_dump(mb_stripos($string_ascii, 'deF', 5, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- ISO-8859-1 string 18 --\n";
|
||||
var_dump(mb_stripos($string_ascii, '123', 4, 'ISO-8859-1'));
|
||||
|
||||
echo "\n-- Multibyte string 1 --\n";
|
||||
$needle1 = '日本語';
|
||||
var_dump(mb_stripos($string_mb, $needle1));
|
||||
|
||||
echo "\n-- Multibyte string 2 --\n";
|
||||
$needle2 = 'こんにちは、世界';
|
||||
var_dump(mb_stripos($string_mb, $needle2));
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : basic functionality***
|
||||
|
||||
-- ISO-8859-1 string 1 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 2 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 3 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 4 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 5 --
|
||||
int(10)
|
||||
|
||||
-- ISO-8859-1 string 6 --
|
||||
int(2)
|
||||
|
||||
-- ISO-8859-1 string 7 --
|
||||
int(2)
|
||||
|
||||
-- ISO-8859-1 string 8 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 9 --
|
||||
bool(false)
|
||||
|
||||
-- ISO-8859-1 string 10 --
|
||||
int(2)
|
||||
|
||||
-- ISO-8859-1 string 11 --
|
||||
int(2)
|
||||
|
||||
-- ISO-8859-1 string 12 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 13 --
|
||||
bool(false)
|
||||
|
||||
-- ISO-8859-1 string 14 --
|
||||
int(10)
|
||||
|
||||
-- ISO-8859-1 string 15 --
|
||||
int(10)
|
||||
|
||||
-- ISO-8859-1 string 16 --
|
||||
int(4)
|
||||
|
||||
-- ISO-8859-1 string 17 --
|
||||
int(12)
|
||||
|
||||
-- ISO-8859-1 string 18 --
|
||||
bool(false)
|
||||
|
||||
-- Multibyte string 1 --
|
||||
int(0)
|
||||
|
||||
-- Multibyte string 2 --
|
||||
bool(false)
|
||||
Done
|
50
ext/mbstring/tests/mb_stripos_error1.phpt
Normal file
50
ext/mbstring/tests/mb_stripos_error1.phpt
Normal file
|
@ -0,0 +1,50 @@
|
|||
--TEST--
|
||||
Test mb_stripos() function : error conditions - Pass incorrect number of args
|
||||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Test how mb_stripos behaves when passed an incorrect number of arguments
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : error conditions ***\n";
|
||||
|
||||
|
||||
//Test mb_stripos with one more than the expected number of arguments
|
||||
echo "\n-- Testing mb_stripos() function with more than expected no. of arguments --\n";
|
||||
$haystack = 'string_val';
|
||||
$needle = 'string_val';
|
||||
$offset = 10;
|
||||
$encoding = 'string_val';
|
||||
$extra_arg = 10;
|
||||
var_dump( mb_stripos($haystack, $needle, $offset, $encoding, $extra_arg) );
|
||||
|
||||
// Testing mb_stripos with one less than the expected number of arguments
|
||||
echo "\n-- Testing mb_stripos() function with less than expected no. of arguments --\n";
|
||||
$haystack = 'string_val';
|
||||
var_dump( mb_stripos($haystack) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : error conditions ***
|
||||
|
||||
-- Testing mb_stripos() function with more than expected no. of arguments --
|
||||
|
||||
Warning: mb_stripos() expects at most 4 parameters, 5 given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Testing mb_stripos() function with less than expected no. of arguments --
|
||||
|
||||
Warning: mb_stripos() expects at least 2 parameters, 1 given in %s on line %d
|
||||
bool(false)
|
||||
Done
|
34
ext/mbstring/tests/mb_stripos_error2.phpt
Normal file
34
ext/mbstring/tests/mb_stripos_error2.phpt
Normal file
|
@ -0,0 +1,34 @@
|
|||
--TEST--
|
||||
Test mb_stripos() function : error conditions - Pass unknown encoding
|
||||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Pass an unknown encoding to mb_stripos() to test behaviour
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : error conditions ***\n";
|
||||
$haystack = 'Hello, world';
|
||||
$needle = 'world';
|
||||
$offset = 2;
|
||||
$encoding = 'unknown-encoding';
|
||||
|
||||
var_dump( mb_stripos($haystack, $needle, $offset, $encoding) );
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : error conditions ***
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "unknown-encoding" in %s on line %d
|
||||
bool(false)
|
||||
Done
|
182
ext/mbstring/tests/mb_stripos_variation1.phpt
Normal file
182
ext/mbstring/tests/mb_stripos_variation1.phpt
Normal file
|
@ -0,0 +1,182 @@
|
|||
--TEST--
|
||||
Test mb_stripos() function : usage variations - pass different data types to $haystack arg
|
||||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Pass mb_stripos different data types as $haystack arg to test behaviour
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted
|
||||
$needle = 'string_val';
|
||||
$offset = 0;
|
||||
$encoding = 'utf-8';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
// get a class
|
||||
class classA
|
||||
{
|
||||
public function __toString() {
|
||||
return "Class A object";
|
||||
}
|
||||
}
|
||||
|
||||
// heredoc string
|
||||
$heredoc = <<<EOT
|
||||
hello world
|
||||
EOT;
|
||||
|
||||
// get a resource variable
|
||||
$fp = fopen(__FILE__, "r");
|
||||
|
||||
// unexpected values to be passed to $haystack argument
|
||||
$inputs = array(
|
||||
|
||||
// int data
|
||||
/*1*/ 0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
/*5*/ 10.5,
|
||||
-10.5,
|
||||
12.3456789000e10,
|
||||
12.3456789000E-10,
|
||||
.5,
|
||||
|
||||
// null data
|
||||
/*10*/ NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
/*12*/ true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
/*16*/ "",
|
||||
'',
|
||||
|
||||
// string data
|
||||
/*18*/ "string",
|
||||
'string',
|
||||
$heredoc,
|
||||
|
||||
// object data
|
||||
/*21*/ new classA(),
|
||||
|
||||
// undefined data
|
||||
/*22*/ @$undefined_var,
|
||||
|
||||
// unset data
|
||||
/*23*/ @$unset_var,
|
||||
|
||||
// resource variable
|
||||
/*24*/ $fp
|
||||
);
|
||||
|
||||
// loop through each element of $inputs to check the behavior of mb_stripos()
|
||||
$iterator = 1;
|
||||
foreach($inputs as $input) {
|
||||
echo "\n-- Iteration $iterator --\n";
|
||||
var_dump( mb_stripos($input, $needle, $offset, $encoding));
|
||||
$iterator++;
|
||||
};
|
||||
|
||||
fclose($fp);
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : usage variations ***
|
||||
|
||||
-- Iteration 1 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 2 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 3 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 4 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 5 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 6 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 7 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 8 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 9 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 10 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 11 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 12 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 13 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 14 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 15 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 16 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 17 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 18 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 19 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 20 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 21 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 22 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 23 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 1 to be string, resource given in %s on line %d
|
||||
bool(false)
|
||||
Done
|
198
ext/mbstring/tests/mb_stripos_variation2.phpt
Normal file
198
ext/mbstring/tests/mb_stripos_variation2.phpt
Normal file
|
@ -0,0 +1,198 @@
|
|||
--TEST--
|
||||
Test mb_stripos() function : usage variations - pass different data types as $needle arg
|
||||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Pass mb_stripos different data types as $needle arg to test behaviour
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted
|
||||
$haystack = 'string_val';
|
||||
$offset = 0;
|
||||
$encoding = 'utf-8';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
// get a class
|
||||
class classA
|
||||
{
|
||||
public function __toString() {
|
||||
return "Class A object";
|
||||
}
|
||||
}
|
||||
|
||||
// heredoc string
|
||||
$heredoc = <<<EOT
|
||||
hello world
|
||||
EOT;
|
||||
|
||||
// get a resource variable
|
||||
$fp = fopen(__FILE__, "r");
|
||||
|
||||
// unexpected values to be passed to $needle argument
|
||||
$inputs = array(
|
||||
|
||||
// int data
|
||||
/*1*/ 0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
/*5*/ 10.5,
|
||||
-10.5,
|
||||
12.3456789000e10,
|
||||
12.3456789000E-10,
|
||||
.5,
|
||||
|
||||
// null data
|
||||
/*10*/ NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
/*12*/ true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
/*16*/ "",
|
||||
'',
|
||||
|
||||
// string data
|
||||
/*18*/ "string",
|
||||
'string',
|
||||
$heredoc,
|
||||
|
||||
// object data
|
||||
/*21*/ new classA(),
|
||||
|
||||
// undefined data
|
||||
/*22*/ @$undefined_var,
|
||||
|
||||
// unset data
|
||||
/*23*/ @$unset_var,
|
||||
|
||||
// resource variable
|
||||
/*24*/ $fp
|
||||
);
|
||||
|
||||
// loop through each element of $inputs to check the behavior of mb_stripos()
|
||||
$iterator = 1;
|
||||
foreach($inputs as $input) {
|
||||
echo "\n-- Iteration $iterator --\n";
|
||||
var_dump( mb_stripos($haystack, $input, $offset, $encoding));
|
||||
$iterator++;
|
||||
};
|
||||
|
||||
fclose($fp);
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : usage variations ***
|
||||
|
||||
-- Iteration 1 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 2 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 3 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 4 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 5 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 6 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 7 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 8 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 9 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 10 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 11 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 12 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 13 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 14 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 15 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 16 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 17 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 18 --
|
||||
int(0)
|
||||
|
||||
-- Iteration 19 --
|
||||
int(0)
|
||||
|
||||
-- Iteration 20 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 21 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 22 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 23 --
|
||||
|
||||
Warning: mb_stripos(): Empty delimiter. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 2 to be string, resource given in %s on line %d
|
||||
bool(false)
|
||||
Done
|
202
ext/mbstring/tests/mb_stripos_variation3.phpt
Normal file
202
ext/mbstring/tests/mb_stripos_variation3.phpt
Normal file
|
@ -0,0 +1,202 @@
|
|||
--TEST--
|
||||
Test mb_stripos() function : usage variations - pass different data types as $offset arg
|
||||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Pass mb_stripos different data types as $offset arg to test behaviour
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted
|
||||
$needle = 'a';
|
||||
$haystack = 'string_val';
|
||||
$encoding = 'utf-8';
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
// get a class
|
||||
class classA
|
||||
{
|
||||
public function __toString() {
|
||||
return "Class A object";
|
||||
}
|
||||
}
|
||||
|
||||
// heredoc string
|
||||
$heredoc = <<<EOT
|
||||
hello world
|
||||
EOT;
|
||||
|
||||
// get a resource variable
|
||||
$fp = fopen(__FILE__, "r");
|
||||
|
||||
// unexpected values to be passed to $offest argument
|
||||
$inputs = array(
|
||||
|
||||
// int data
|
||||
/*1*/ 0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
/*5*/ 10.5,
|
||||
-10.5,
|
||||
12.3456789000e10,
|
||||
12.3456789000E-10,
|
||||
.5,
|
||||
|
||||
// null data
|
||||
/*10*/ NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
/*12*/ true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
/*16*/ "",
|
||||
'',
|
||||
|
||||
// string data
|
||||
/*18*/ "string",
|
||||
'string',
|
||||
$heredoc,
|
||||
|
||||
// object data
|
||||
/*21*/ new classA(),
|
||||
|
||||
// undefined data
|
||||
/*22*/ @$undefined_var,
|
||||
|
||||
// unset data
|
||||
/*23*/ @$unset_var,
|
||||
|
||||
// resource variable
|
||||
/*24*/ $fp
|
||||
);
|
||||
|
||||
// loop through each element of $inputs to check the behavior of mb_stripos()
|
||||
$iterator = 1;
|
||||
foreach($inputs as $input) {
|
||||
echo "\n-- Iteration $iterator --\n";
|
||||
var_dump( mb_stripos($haystack, $needle, $input, $encoding));
|
||||
$iterator++;
|
||||
};
|
||||
|
||||
fclose($fp);
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : usage variations ***
|
||||
|
||||
-- Iteration 1 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 2 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 3 --
|
||||
|
||||
Warning: mb_stripos(): Offset not contained in string. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 4 --
|
||||
|
||||
Warning: mb_stripos(): Offset not contained in string. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 5 --
|
||||
bool(false)
|
||||
|
||||
-- Iteration 6 --
|
||||
|
||||
Warning: mb_stripos(): Offset not contained in string. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 7 --
|
||||
|
||||
Warning: mb_stripos(): Offset not contained in string. in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 8 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 9 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 10 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 11 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 12 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 13 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 14 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 15 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 16 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 17 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 18 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 19 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 20 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, string given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 21 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, object given in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 22 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 23 --
|
||||
int(8)
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 3 to be long, resource given in %s on line %d
|
||||
bool(false)
|
||||
Done
|
222
ext/mbstring/tests/mb_stripos_variation4.phpt
Normal file
222
ext/mbstring/tests/mb_stripos_variation4.phpt
Normal file
|
@ -0,0 +1,222 @@
|
|||
--TEST--
|
||||
Test mb_stripos() function : usage variations - pass different data types as $encoding arg
|
||||
--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: Find position of first occurrence of a string within another
|
||||
* Source code: ext/mbstring/mbstring.c
|
||||
*/
|
||||
|
||||
/*
|
||||
* Pass mb_stripos different data types as $encoding arg to test behaviour
|
||||
* Where possible 'UTF-8' has been entered as a string value
|
||||
*/
|
||||
|
||||
echo "*** Testing mb_stripos() : usage variations ***\n";
|
||||
|
||||
// Initialise function arguments not being substituted
|
||||
$haystack = 'string_val';
|
||||
$needle = 'val';
|
||||
$offset = 0;
|
||||
|
||||
//get an unset variable
|
||||
$unset_var = 10;
|
||||
unset ($unset_var);
|
||||
|
||||
// get a class
|
||||
class classA
|
||||
{
|
||||
public function __toString() {
|
||||
return "UTF-8";
|
||||
}
|
||||
}
|
||||
|
||||
// heredoc string
|
||||
$heredoc = <<<EOT
|
||||
UTF-8
|
||||
EOT;
|
||||
|
||||
// get a resource variable
|
||||
$fp = fopen(__FILE__, "r");
|
||||
|
||||
// unexpected values to be passed to $input argument
|
||||
$inputs = array(
|
||||
|
||||
// int data
|
||||
/*1*/ 0,
|
||||
1,
|
||||
12345,
|
||||
-2345,
|
||||
|
||||
// float data
|
||||
/*5*/ 10.5,
|
||||
-10.5,
|
||||
12.3456789000e10,
|
||||
12.3456789000E-10,
|
||||
.5,
|
||||
|
||||
// null data
|
||||
/*10*/ NULL,
|
||||
null,
|
||||
|
||||
// boolean data
|
||||
/*12*/ true,
|
||||
false,
|
||||
TRUE,
|
||||
FALSE,
|
||||
|
||||
// empty data
|
||||
/*16*/ "",
|
||||
'',
|
||||
|
||||
// string data
|
||||
/*18*/ "UTF-8",
|
||||
'UTF-8',
|
||||
$heredoc,
|
||||
|
||||
// object data
|
||||
/*21*/ new classA(),
|
||||
|
||||
// undefined data
|
||||
/*22*/ @$undefined_var,
|
||||
|
||||
// unset data
|
||||
/*23*/ @$unset_var,
|
||||
|
||||
// resource variable
|
||||
/*24*/ $fp
|
||||
);
|
||||
|
||||
// loop through each element of $inputs to check the behavior of mb_stripos()
|
||||
$iterator = 1;
|
||||
foreach($inputs as $input) {
|
||||
echo "\n-- Iteration $iterator --\n";
|
||||
var_dump( mb_stripos($haystack, $needle, $offset, $input));
|
||||
$iterator++;
|
||||
};
|
||||
|
||||
fclose($fp);
|
||||
|
||||
echo "Done";
|
||||
?>
|
||||
|
||||
--EXPECTF--
|
||||
*** Testing mb_stripos() : usage variations ***
|
||||
|
||||
-- Iteration 1 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "0" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 2 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "1" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 3 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "12345" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 4 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "-2345" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 5 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "10.5" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 6 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "-10.5" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 7 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "123456789000" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 8 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "1.23456789E-9" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 9 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "0.5" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 10 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 11 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 12 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "1" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 13 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 14 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "1" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 15 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 16 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 17 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 18 --
|
||||
int(7)
|
||||
|
||||
-- Iteration 19 --
|
||||
int(7)
|
||||
|
||||
-- Iteration 20 --
|
||||
int(7)
|
||||
|
||||
-- Iteration 21 --
|
||||
int(7)
|
||||
|
||||
-- Iteration 22 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 23 --
|
||||
|
||||
Warning: mb_stripos(): Unknown encoding "" in %s on line %d
|
||||
bool(false)
|
||||
|
||||
-- Iteration 24 --
|
||||
|
||||
Warning: mb_stripos() expects parameter 4 to be string, resource given in %s on line %d
|
||||
bool(false)
|
||||
Done
|
Loading…
Add table
Add a link
Reference in a new issue