mirror of
https://github.com/php/php-src.git
synced 2025-01-07 03:13:33 +08:00
5088614ea1
no MFB so far, since substr() changes are not MFBed either
60 lines
1.4 KiB
PHP
60 lines
1.4 KiB
PHP
--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", 5, 7, "ASCII");
|
|
foo("あいうえおかきくけこさしす", 5, 7, "EUC-JP");
|
|
bar("This is a test", 100000);
|
|
bar("This is a test", 0, 100000);
|
|
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"), 3, 8, "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"
|