データが次のような形式で指定されている csv ファイルを解析しようとしています。
"Total","Shazam (DE)","Total",,"215,611","538","£935.97","£60.77"
ここで、以下のような fgetcsv() を指定すると:
$values = fgetcsv($f,8098);
次のように配列を返します:
array(9) {
[0]=>
string(15) ""Total""
[1]=>
string(27) ""Shazam (DE)""
[2]=>
string(15) ""Total""
[3]=>
string(1) ""
[4]=>
string(9) ""215"
[5]=>
string(9) "611""
[6]=>
string(11) ""538""
[7]=>
string(19) ""£935.97""
[8]=>
string(19) ""£60.77"
"
}
しかし今、次のようなifステートメントを与えると:
$values = fgetcsv($f,8098);
if ($values[0] == "Total")
echo "Hello";
何もエコーしていません。なぜ条件が満たされていないのですか? 囲み引用符と関係がありますか?
私は引用符をエスケープしようとさえしました。
if ($values[0] == '\"Total\"')
echo "Hello";
しかし、役に立たない。
このために .ini 設定を変更する必要がありますか? 私を助けてください。
編集: var_dump を実行してみましたが、引用符を含む値が表示されました:
array(9) {
[0]=>
string(15) ""Total""
[1]=>
string(27) ""Shazam (DE)""
[2]=>
string(15) ""Total""
[3]=>
string(1) ""
...
}
それでも
$values[0] == "\"Total\""
うまくいきませんでした。正しいコンパレータは何ですか?
更新: 目的のない試行錯誤の数時間後、最終的に厄介な問題が見つかりましたが、問題は解決しました。
最初に、csv ファイルを開こうとしたときに、コンテンツとしてÿþD""を含むメモ帳が開きました。私がしたことは、filecontent 全体をコピーし、同じ名前の新しい csv ファイルを作成したことです。驚いたことに、それは機能しました。
古いファイルは MS-EXCEL/NOTEPAD では問題なく開くことができましたが、Excel では各行が 1 つのセル内に表示されていました。
私の質問は、.csv fromat の問題は何でしたか? 誰もそのような問題に遭遇したことがありますか?