| ベーシック認証解除ブログトップ | PHP関連 | cakePHPでデータベースのテーブルにフィールドを追加したときに発生した問題
fgetcsvのバグ
この記事は1年以上前の記事のため、内容が古い可能性があります。
いまさらですが、PHP4ではまともに使用できていた「fgetcsv」関数。
PHP5になった途端不具合の嵐です。(サーバによるかもしれませんが。)
$csv = "/www/csv/test.csv";
$fl = fopen($csv, "r");
while($data = fgetcsv($fl, 10000)){
echo $data[0].":".$data[1];
}
としていると、カンマでの区切りがうまくいっていないのか、表示されなかったり、特定の文字で文字化けを起こしたりします。
こうなると、mb_convert_encodingで文字コードを調整しようとしてもうまくいきません。
ここはおとなしくfgetcsvをあきらめてfgetsとexplodeを使用しましょう。
$csv = "/www/csv/test.csv";
$fl = fopen($csv, "r");
while($data_fl = fgets($fl)){
$data_fl = rtrim($data_fl);
$data = explode(",", $data_fl);
echo $data[0].":".$data[1];
}
※rtrimは行の最後にある改行コードを取り除いてくれます。必要に応じて記述してください。自分はよく取り出したデータを条件分岐にかけることがあるので、改行コードの\r\nがあると不具合を起こすことがあります。
記述が少し長くなりますが、これで解決します。
トラックバック
トラックバックURL
コメントする
※メールアドレスが公開されることはありません。