[PHP-dev 1030] Re: Fwd: [PHP-I18N] Re: ICU Extensions for PHP
Moriyoshi Koizumi
moriyoshi @ at.wakwak.com
2004年 11月 3日 (水) 15:48:17 JST
小泉です。
On 2004/11/01, at 14:27, Tadashi Jokagi wrote:
> ぢょ〜@よくきたなです.
> i18n 的なことで日本ではかなり軽視されている iconv をちょくちょ
> く覗いてるんですが, PHP 5 で少しメソッド増えましたよね.
はい。増やしました。XML 関連の拡張モジュールが標準で enable され、
iconv が libxml とのからみで自動的に有効にされることが推測できたので、
どこでも multibyte-aware な関数を使える環境を実現するには iconv に
アドホック的に mbstring と等価な関数を追加していくしかないという
動機からでした。
# 決して mbstring を見限ったとかそういう意図はないですよ
結局その予想通りとなり、iconv モジュールは Windows 版の公式バイナリでも
デフォルトで有効となりましたが…。
> #PHP 4だと iconv()しかなかったしいまもそう
>
> これが mbstring レベルまで充実したらある意味発展的解散? なのかなー
> とか思ってます.現状だと mb_send_mail() と等価のものが出来たら
> PHP 5 だと技術的にはかなりの人は iconv に移行できるんじゃないかと.
>
個人的には iconv_substr() 等を使う事はあまりおすすめしません ^^;
というのは、mb_substr() などと比較して恐ろしく遅いためです。
(平均で 1/3 位の速度です)
<?php
$str = str_repeat('a', 10000000).'b';
$s = explode(' ', microtime());
iconv_strpos($str, 'b', 0, "UTF-8");
iconv_substr($str, 1200000, 1, "UTF-8");
$e = explode(' ', microtime());
printf("%f\n", ($e[0] - $s[0]) + ($e[1] - $s[1]));
$s = explode(' ', microtime());
mb_strpos($str, 'b', 0, "UTF-8");
mb_substr($str, 1200000, 1, "UTF-8");
$e = explode(' ', microtime());
printf("%f\n", ($e[0] - $s[0]) + ($e[1] - $s[1]));
?>
そうは言っても、iconv_mime_*() ファミリは mbstring よりはだいぶ
RFC に添っていて柔軟性の高い作りになっていますので、
iconv_mime_decode_headers() などはメールボックス解析などに有効では
ないかと (かってに) 期待しています。
あと、iconv_send_mail() について。同等の関数を追加することは可能ですが、
どの程度需要があるでしょうか。。。
PHP-dev メーリングリストの案内