【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

お世話になります。
現在、以下PHP記述でPostgreSQL8.4のデータベースからCSV形式のエクスポートをしていますが、文章データの中に改行があり、エクセルで開く際に不具合が発生しています。

改行コードを取るかエクセル形式でエクスポートしたいのですが
どの様にすれば宜しいでしょうか?
ご教示頂けないでしょうか。宜しくお願いいたします。<(_ _)>

<?PHP
require("./inc/ascp.php");

$ch = (isset($_GET['ch'])) ? $_GET['ch'] : "";
if(strlen($ch) > 0){
require("../inc/config.php");
$db = pg_connect(DB_CONN) or die("接続失敗\n");
$sql = "select * from store_table order by kaiin_id";
$rst = pg_query($db,$sql);
if($rst){
header("Content-Type: application/octet-stream; charset=SJIS");
header("Content-Disposition: attachment; filename=data.csv");//ヘッダー項目
for($i=0; $i<pg_num_fields($rst); $i++){
if($i == 0){
print(mb_convert_encoding(pg_field_name($rst,$i),"SJIS","EUC-JP"));
}else{
print(",".mb_convert_encoding(pg_field_name($rst,$i),"SJIS","EUC-JP"));
}
}
print("\n");
for($j=0 ;$j<pg_num_rows($rst); $j++) {
for($k=0; $k<pg_num_fields($rst); $k++) {
$str=pg_result($rst,$j,$k);
if($k == 0){
print(mb_convert_encoding($str,"SJIS","EUC-JP"));
}else{
print(",".mb_convert_encoding($str,"SJIS","EUC-JP"));
}
}
print("\n");
}
exit;
}
}
?>

A 回答 (1件)

, で区切るだけがCSV形式ではありません。



下記で出力するとよいです。

$arr = pg_fetch_array($rst, $j);
mb_convert_variables("SJIS", "EUC-JP", $arr);
fputcsv(STDOUT, $arr);
    • good
    • 0
この回答へのお礼

早々のご教示、ありがとうございました!
print("\n");の後に追記する事で解決できました!!
<(_ _)>

お礼日時:2023/02/22 12:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報