Re: ver0.1.0 utf-8環境での不具合

投稿ツリー


このトピックの投稿一覧へ

なーお

なし Re: ver0.1.0 utf-8環境での不具合

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/7/5 19:51 | 最終変更
なーお  長老   投稿数: 1746

AXYZ-SAKさん、こんにちは。

mb_substr関数は、byte指定ではなくて文字数指定ですよね。 :roll:

そのため、

  • 日本語: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
返信する

この投稿に返信する

題名
ゲスト名
投稿本文

  条件検索へ