2

約 50 の質問と 70,000 のエントリを使用して実施した大規模な調査があるため、手動で編集したり、ピボット テーブルを使用したりするだけではうまくいきません。データをデータベースにアップロードする必要があります。fgcsv() を使用している間、日本語の文字を正確に読み取ることができません。ロケールを UTF-8 と SJIS に設定してみましたが、どちらも日本語のすべての文字を読みたいとは思われません。これはバグかもしれないとどこかで読みましたが、わかりません..

データは次のようになります。

Q-004   必須回答    あなたは、以下のどちらにお住まいですか?    S/A
1       北海道 Hokkaido
2       青森県 Aomori
3       岩手県 Iwate
4       宮城県 Miyagi
5       秋田県 Akita

これが私のコードです:

setlocale(LC_ALL, 'ja_JP.SJIS');
        $fp = fopen($_POST["filename"],'r') or die("can't open file");
            $csv_line = fgetcsv($fp,1024);
            $query = "";
            $count = 0;
            $question = false;
            while($csv_line = fgetcsv($fp,1024)) {

                if (!$question && strpos($csv_line[0],"Q-")!== false)
                {
                    echo "Found a question: ".$csv_line[2] . "<br>";
                    $question = true;
                }
                else if($question && strlen($csv_line[0])==0)
                {
                    echo "<hr>";
                    $question = false;
                }
                else if($question && intval($csv_line[0])>0)
                {
                    echo $csv_line[0]. " has value ". $csv_line[2]." - ".$csv_line[3]. "<br>";
                }       

                $count++;
            }
        echo "$count records read successfully";
        fclose($fp) or die("can't close file");

結果は次のとおりです。

Found a question: A以下のどちらにお住まいですか?
1 has value k海道 - Hokkaido
2 has value X県 - Aomori
3 has value - Iwate
4 has value {城県 - Miyagi
5 has value H田県 - Akita
4

1 に答える 1

2

PHP で CSV を読み取ることになると、私は言います...それをしないで、代わりに SQL データベースを使用してください。SQL データベースでは、MySQL でujis_japanese_ciなどの照合を設定できます。

phpMyAdmin を使用して CSV を MySQL データベースに簡単にインポートし、CSV ファイルを読み取る代わりに MySQL データベースからデータをレンダリングできるはずです。

これは回避策ですが、私の一般的な経験では、CSV + 外国語/特殊文字 == 問題です。

少なくとも試してみる価値はあると思います。幸運を

于 2012-08-15T02:18:56.007 に答える