我应该使用哪个多字节处理库:iconv或mbstring?
经过一番谷歌搜索后,我没有找到足够的论据来说服我特别使用一个,而且我无法获得任何基准(而且我太懒了,无法创建一个:-p)。
毕竟也许这个选择并不重要?
感谢您的任何建议。
我倾向于结合使用两者 - 根据我的需要。 我使用 iconv 从一种字符集转换为另一种字符集,但使用 mbstring 进行更简单的操作,例如 mb_strtoupper() 和 mb_stristr()。但如果只需要其中一个库,我建议纯粹使用 mbstring,因为它具有广泛的功能和易用性。
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/>";