--TEST--
iconv_substr()
--SKIPIF--
<?php extension_loaded('iconv') or die('skip iconv extension is not available'); ?>
--INI--
iconv.internal_charset=ISO-8859-1
--FILE--
<?php
function hexdump($str) {
    
$len strlen($str);
    for (
$i 0$i $len; ++$i) {
        
printf("%02x"ord($str[$i]));
    }
    print 
"\n";
}

function 
foo($str$offset$len$charset) {
    
hexdump(substr($str$offset$len));
    
hexdump(iconv_substr($str$offset$len$charset));
}

function 
bar($str$offset$len false) {
    if (
is_bool($len)) {
        
var_dump(substr($str$offset));
        
var_dump(iconv_substr($str$offset));
    } else {
        
var_dump(substr($str$offset$len));
        
var_dump(iconv_substr($str$offset$len));
    }
}

foo("abcdefghijklmnopqrstuvwxyz"57"ASCII");
foo("あいうえおかきくけこさしす"57"EUC-JP");
bar("This is a test"100000);
bar("This is a test"0100000);
bar("This is a test", -3);
bar("This is a test"0, -9);
bar("This is a test"0, -100000);
bar("This is a test", -9, -100000);
var_dump(iconv("ISO-2022-JP""EUC-JP"iconv_substr(iconv("EUC-JP""ISO-2022-JP""こんにちは ISO-2022-JP"), 38"ISO-2022-JP")));
?>
--EXPECT--
666768696a6b6c
666768696a6b6c
a6a4a8a4aaa4ab
a4aba4ada4afa4b1a4b3a4b5a4b7
bool(false)
bool(false)
string(14) "This is a test"
string(14) "This is a test"
string(3) "est"
string(3) "est"
string(5) "This "
string(5) "This "
bool(false)
bool(false)
bool(false)
bool(false)
string(10) "ちは ISO-2"