返信する: d3diaryサポート板
- Re: ver0.1.0 utf-8環境での不具合
- 投稿者: なーお 投稿日時: 2010/7/5 19:51
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)
という感じで。(他に応用は効きませんが。。)
トリッキーな方法ですが、もし検証いただければ助かります。