.csv ファイルからデータを読み取って、Web ページにテキストとして出力しようとしています。
これを行うのは初めてで、厄介な小さな問題に遭遇しました。
私の .csv ファイル (デフォルトで Excel によって開かれます) には複数の行があり、全体を 1 つの長い文字列として読み取ります。
このような:
$contents = file_get_contents("files/data.csv");
私が作成したこの例のファイルには、2 行あります。
Paul Blueberryroad 85 us 懐中電灯、バッグ 2008 年 11 月 20 日、午後 4 時 39 分
Hellen Blueberryroad 85 us lens13mm,Flashlight,Bag,ExtraBatteries 2008 年 11 月 20 日 16:41:32
しかし、PHP によって読み取られる文字列は次のとおりです。
ポール;Blueberryroad 85;us;Flashlight,Bag;2008 年 11 月 20 日、午後 4 時 39 分Hellen;Blueberryroad 85;us;lens13mm,Flashlight,Bag,ExtraBatteries;2008 年 11 月 20 日 16:41:32
私はこれを次のように分割しています:
list($name[], $street[], $country[], $accessories[], $orderdate[]) = split(";",$contents);
私が望むのは、 $name[] がその内容として「ポール」と「ヘレン」を含むことです。そして、それぞれの列の値を受け取る他の配列。
代わりに、ポールのみを取得し、$orderdate[] の内容は
2008 年 11 月 20 日午後 4 時 39 分ヘレン
したがって、すべての行が連結されます。誰かが私が必要なものを達成する方法を教えてもらえますか?
編集:解決策が見つかりました。残っている奇妙なことは1つだけです:
このコードを使用して解決しました:
$fo = fopen("files/users.csv", "rb+");
while(!feof($fo)) {
$contents[] = fgetcsv($fo,0,';');
}
fclose($fo);
何らかの理由で、私の CSV ファイルには 2 行しかありませんが、2 つの配列と 1 つのブール値が返されます。最初の 2 つはデータ配列で、ブール値は 0 です。