[PHP-users 33530] php-4.3.2でDBの日付スタンプに漢字が混ざる

tatsuya matsuyama tatsuya @ kk-okamoto.jp
2008年 5月 13日 (火) 10:09:51 JST


松山と申します。
RedHat7.3J+国際化版php-4.2.3-multibyteで動作していたコンテンツを
RedHatLinuxES+php4.3.2へ移植中です。

Windows2003server+SQLserver2000へアクセスするコンテンツをテストしています。

SQLserverから取得したタイムスタンプ
 $input_day[$i]  = $data->input_day;
などを
 // 受付日の整形
 unset($tmp_year);
 $tmp_year  = (1*date("Y",strtotime($input_day[$i],"")))-1988; // 平成処理
 $tmp_youbi = ask_youbi(date("w",strtotime($input_day[$i],"")));
 $input_day[$i] = date("n/j/",strtotime($input_day[$i],""));
 $input_day[$i] = "H".$tmp_year."/".$input_day[$i]."($tmp_youbi)";
のコードを通すと国際化版php-4.2.3とは違う表示になります。

原因を探ったところ、
strtotime($input_day[$i],"")が-1を戻しており、
print mb_convert_encoding($input_day[$i], "sjis", "euc")とすると
"5月 13 2008 08:00午前"が入っていました。
# 何故か「日」はない?

strtotimeのマニュアルに
「US 英文形式の日付を含む文字列が指定されることを期待してお り」
とあるのが原因のように思っています。

同じSQLserverに対して
国際化版php-4.2.3からのコンテンツは希望の動作をしているので、
移転先のRedHatES+php-4.3.2の設定の問題だと思います。

この問題に該当する設定は何でしょうか?

■/etc/freetds.conf
[MyServer2k]
        host = 192.168.0.18
        port = 1433
#       tds version = 8.0
        tds version = 4.2
        charset = sjis
        client charset = sjis




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