iconv 还是 mbstring?

问题描述 投票:0回答:2

我应该使用哪个多字节处理库:iconvmbstring

经过一番谷歌搜索后,我没有找到足够的论据来说服我特别使用一个,而且我无法获得任何基准(而且我太懒了,无法创建一个:-p)。

毕竟也许这个选择并不重要?

感谢您的任何建议。

php iconv mbstring
2个回答
7
投票

我倾向于结合使用两者 - 根据我的需要。 我使用 iconv 从一种字符集转换为另一种字符集,但使用 mbstring 进行更简单的操作,例如 mb_strtoupper() 和 mb_stristr()。但如果只需要其中一个库,我建议纯粹使用 mbstring,因为它具有广泛的功能和易用性。


0
投票

iconv 是一个缓慢的模块..我不建议使用它。

$test_string = '   sdkjfsdkjfkdsjfksdk,af[kopc opwfmwwiaduju;dhxnqaщашрьтжфпщвтцфу йпвджйравоьэгзпю.ртфдсоывьфждальцхуЩГЕПРФЭЩШКТМЛОАЯИГРВКНШДПАФГДНИМСТЧИВЫАолпаролыт цхцйшывцщфрпи маДЛjfksd ';

$a = microtime(true);
for ($i = 0; $i <= 1000000; $i++) {
    strlen(utf8_decode($test_string));
}
echo "Function strlen(utf8_decode(test_string)) - time: " . sprintf('%.6f sec.', microtime(true) - $a) . " <br/>";

$b = microtime(true);
for ($i = 0; $i <= 1000000; $i++) {
    strlen($test_string);
}
echo "Function strlen(test_string) - time: " . sprintf('%.6f sec.', microtime(true) - $b) . " <br/>";

$c = microtime(true);
for ($i = 0; $i <= 1000000; $i++) {
    mb_strlen($test_string, 'UTF-8');
}
echo "Function mb_strlen(test_string, 'UTF-8') - time: " . sprintf('%.6f sec.', microtime(true) - $c) . " <br/>";


$d = microtime(true);
for ($i = 0; $i <= 1000000; $i++) {
    iconv_strlen($test_string, 'UTF-8');
}
echo "Function iconv_strlen(test_string, 'UTF-8') - time: " . sprintf('%.6f sec.', microtime(true) - $d) . " <br/>";
  • 函数 strlen(utf8_decode(test_string)) - 时间:3.171193 秒。
  • 函数 strlen(test_string) - 时间:0.015400 秒。
  • 函数 mb_strlen(test_string, 'UTF-8') - 时间:0.479018 秒。
  • 函数 iconv_strlen(test_string, 'UTF-8') - 时间:6.402838 秒。
© www.soinside.com 2019 - 2024. All rights reserved.