[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 メーリングリストの案内