[PHP-users 27289] mb_strwidth()の結果が期待と異なる

Shu Sawada luna @ lunanet.gr.jp
2005年 10月 24日 (月) 23:15:37 JST


さわだと申します。

mb_strwidth()について質問させてください。
全角の'−' (IMEでは'[全]マイナス'と表示)の文字幅が、なぜか1と判定
されてしまいます。
しかし、環境により期待通り2と判定されることもあり、その理由が
判らず悩んでおります。

私が使用している検証コードです。
-----
#!/usr/bin/php
<?php
        $string = "99条99丁目1−11";
        mb_internal_encoding("EUC-JP");

        print "mb_strwidth(): " . mb_strwidth($string, "EUC-JP") . "\n";
        print "mb_strlen(): " . mb_strlen($string, "EUC-JP") . "\n";

        $string = "−";
        print "mb_strwidth(): " . mb_strwidth($string, "EUC-JP") . "\n";
        print "mb_strlen(): " . mb_strlen($string, "EUC-JP") . "\n";
?>
-----

これを実行すると、

[luna @ vanilla luna]$ ./mb_strwidth.php
mb_strwidth(): 21
mb_strlen(): 11
mb_strwidth(): 1
mb_strlen(): 1

という結果が返ってきます。
しかし、環境によっては、

[luna@***** luna]$ ./mb_strwidth.php
mb_strwidth(): 22
mb_strlen(): 11
mb_strwidth(): 2
mb_strlen(): 1

と、期待通りの値が得られます。
手元で確認できる限りですと、

期待通りの結果が得られない環境:
Vine Linux 3.2, php 4.3.11-cli  (RPM)
SuSE Linux 9.2-EL, php 4.4.0-cli (tarball)
RedHat Linux 8.0, php 4.3.11-cli (tarball)

期待通りの結果が得られる環境:
RedHat Linux 7.3, php 4.3.10-cli (tarball)
CentOS 4.2, php 4.3.9-cgi (RPM)

といった感じです。

何か設定、あるいは条件等があるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教示いただけると幸いです。

以上、何卒宜しくお願いいたします。

-- 
Shu Sawada
http://luna.lunanet.gr.jp/


PHP-users メーリングリストの案内