mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00

For mb_parse_str, when mbstring.http_input (INI parameter) is a list of multiple possible text encodings (which is not the case by default), this new implementation is about 25% faster. When mbstring.http_input is a single value, then nothing is changed. (No automatic encoding detection is done in that case.)
50 lines
1.1 KiB
PHP
50 lines
1.1 KiB
PHP
--TEST--
|
|
mb_parse_str() with multiple candidate encodings
|
|
--EXTENSIONS--
|
|
mbstring
|
|
--INI--
|
|
mbstring.http_input=UTF-8,SJIS,EUC-JP,ISO-8859-1,ISO-2022-JP
|
|
--FILE--
|
|
<?php
|
|
// The encoding of the input strings will be guessed, from the list specified
|
|
// via mbstring.http_input
|
|
// All of them will be converted to UTF-8
|
|
mb_internal_encoding('UTF-8');
|
|
|
|
$queries = array(
|
|
// UTF-8
|
|
"テスト=abc",
|
|
// SJIS
|
|
"\x82\xA0\x82\xA2\x82\xA4=\x93V",
|
|
"foo=\xE6&bar=\x97&baz=\xA5",
|
|
// invalid ISO-2022-JP
|
|
"a\x1F$(@=123",
|
|
"abc=a\x1F$(@"
|
|
);
|
|
|
|
foreach ($queries as $query) {
|
|
echo "Query: " . bin2hex($query) . "\n";
|
|
|
|
$array = [];
|
|
mb_parse_str($query, $array);
|
|
|
|
foreach ($array as $key => $value) {
|
|
echo bin2hex($key) . "=>" . bin2hex($value) . "\n";
|
|
}
|
|
}
|
|
|
|
?>
|
|
--EXPECTF--
|
|
Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in %s on line %d
|
|
Query: e38386e382b9e383883d616263
|
|
e38386e382b9e38388=>616263
|
|
Query: 82a082a282a43d9356
|
|
e38182e38184e38186=>e5a4a9
|
|
Query: 666f6f3de6266261723d972662617a3da5
|
|
666f6f=>c3a6
|
|
626172=>c297
|
|
62617a=>c2a5
|
|
Query: 611f2428403d313233
|
|
611f242840=>313233
|
|
Query: 6162633d611f242840
|
|
616263=>611f242840
|