Re: ver0.1.0 utf-8環境での不具合
投稿ツリー
-
ver0.1.0 utf-8環境での不具合 (AXYZ-SAK, 2010/7/5 16:20)
-
Re: ver0.1.0 utf-8環境での不具合 (なーお, 2010/7/5 19:51)
-
Re: ver0.1.0 utf-8環境での不具合 (AXYZ-SAK, 2010/7/7 9:35)
- Re: ver0.1.0 utf-8環境での不具合 (なーお, 2010/7/8 7:22)
-
Re: ver0.1.0 utf-8環境での不具合 (AXYZ-SAK, 2010/7/7 9:35)
-
Re: ver0.1.0 utf-8環境での不具合 (なーお, 2010/7/5 19:51)
なーお
投稿数: 1746
AXYZ-SAKさん、こんにちは。
mb_substr関数は、byte指定ではなくて文字数指定ですよね。
そのため、
- 日本語:1文字の文字列から2文字を取り出す・・1文字取得
- 英語 :3文字の文字列から2文字を取り出す・・2文字取得
となるはずなんですが、、
(ver0.09でUTF-8環境で、問題の報告はありませんでした)
調べるとphpのロケール関連で環境依存になりそうですね。 手元にUTF-8などの3バイト文字ロケール環境が無いので検証できないのですが、例えば、以下のような感じでどうでしょうか。
(mb_substrがfalseを返すようですと元も子も無いですが。。)
$str_enco = mb_internal_encoding();
$str_temp1 = mb_substr(constant("_MD_W_SUN"),0,2,$str_enco);
$str_temp2 = mb_substr(constant("_MD_W_SUN"),0,2);
$wk_strlen = ($str_temp1 != $str_temp2) ? 3 : 2;
とした上で、それぞれの切り出し部分は
mb_substr(constant("_MD_W_SUN"),0,$wk_strlen)
という感じで。(他に応用は効きませんが。。)
トリッキーな方法ですが、もし検証いただければ助かります。
投票数:0
平均点:0.00
返信する