PHPの「mb_detect_encoding」を使って読み込みファイルのエンコード処理
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…
データベースに一括保存する際や、データベースを使わないで簡易的にリストを読み込みで一覧表示をする際にCSVファイルを使用する機会が多くあります。
今回はPHPでのCSV読み込み処理を行った時の対処方法をメモ
$fp = fopen('○○○○.csv', 'r');
while($line = fgetcsv($fp)) {
foreach($line as $val){
echo ($val.'<br>');
}
}
fclose($fp);
「fopen」で該当するCSVファイルを読み込み、「fgetcsv」で配列に収納。
「while」で「行」を「foreach」で「列」を取得して表示。
上記はCSVに記載されてる全ての値を表示する場合。
部分的に表示したい場合は下記も参照。
//特定の列のみ一覧表示(2列目と4列目)
while($line = fgetcsv($fp)) {
echo($line[1].$line[3].'<br>');
}
//特定の行のみ表示(1,3,5行目)
$i = 1; //行番号の設定
$active = '/1|3|5/'; //対象番号の設定
while($line = fgetcsv($fp)) {
if(preg_match($active, $i)){
foreach($line as $val){
echo ($val.'<br>');
}
}
$i++;
}
//配列に入れて表示(3行目の3列目のみ)
$i = 1;
while($line = fgetcsv($fp)) {
$dataary[$i] = $line;
$i++;
}
echo($dataary[3][2].'<br>');
数字の箇所はいずれも行番号と列番号。
行は「$i」で上から「1行目」から、列は左から「0列目」から始まる