スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP]SJISのCSVファイルを読み込む

基本的にPHPのスクリプトは、EUC-JPで記述するのが私のスタイルです。
CSVファイルはExcelなどで開くことを考えて、文字コードはSJISになります。

今回、問題になったのは、SJISで作成したCSVファイルのデータを読み込んで
集計して表示するためのプログラムを作ろうとしました。

ブログランキング・にほんブログ村へ

-------------------------------------------------
CSVファイル(タブ区切りです)
-------------------------------------------------
やまだたろう りんご
ささきはなこ もも
たなかじろう くり
かのうたくや りんご
えとうしんや りんご
-------------------------------------------------

画面に表示したいのは、こんな感じ。

りんご 3票
もも  1表
くり  1票
ばなな 0票


test.php

//PHPのアイテム定義
$ITEMS = array("りんご","もも","くり","ばなな");

//集計用配列のリセット
$r_str = array();
foreach ($ITEMS as $key) {
$r_str[$key] = 0;
}

//ファイルオープン
$fp = fopen("test.csv", "r");

//CSVを1行ずつ読み込んで集計していく
while(($data = fgetcsv($fp,10000)) !== FALSE) {
    //CSVファイルはSJISなので必ずこのコードが必要
    $buf = mb_convert_encoding($data[1], "EUC-JP", "SJIS");
    //連想配列にデータをセット
    $r_str[$buf]++;
}
//ファイルクローズ
fclose($fp);

//表示させてみましょう
foreach ($ITEM as $key) {
print "$key:$r_str[$key]票
";
}


ここでポイントになるのは、エンコードを忘れずにすること。
忘れると、別の文字と認識されて、見た目は同じ文字なのに
違う文字と認識されてしまいます。

と、えらそうなことを言ってますが、CSVファイルがSJISだということに
気付くのに半日くらいかかって、エンコードを思いつくのに小一時間かかったのは
社長には秘密で。

ブログランキング・にほんブログ村へ

[参考URL]
取り込みたいCSVファイルはSJIS、私のHPはEUC。


コメントの投稿

非公開コメント

スポンサードリンク
枚方情報
最新記事
カテゴリ
人気ページランキング
ブログパーツ
検索フォーム
最新コメント
楽天オススメ
人気検索記事
プロフィール

ときどきぷろぐらま。

miichan1016をフォローしましょう

Author:ときどきぷろぐらま。
ママぷろぐらま、として頑張ってます。
好きなことはPHPでプログラムを組むこと。
ブログランキング・にほんブログ村へ

メールフォーム

名前:
メール:
件名:
本文:

お気に入りリンク
相互リンク 新着記事
相互リンクをしていただくと、こちらにあなたの最新のブログ記事が表示されます。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。