1

,データに含まれている場合、データが部分に分割され、他の列に配置されてcsvファイルが破壊されるため、csvファイルの作成で問題が発生しました。

出力例は次のとおりです。

サンプル出力リンク

あなたが見ることができるように、列の最初の行は、それから始まるTITLEこのデータを分割し、他の列に配置する必要があります。"Acer Aspire AS5250-0639 15.5" Laptop (1.65 GHz AMD Dual-Core Processor E-450, 4 GB RAM, 500 GB Hard Drive, DVD+/-RW Optical Drive, Windows 7 Home Premium 64-bit)"4 GB RAM,

今のところ、これが私のPHPスクリプトです。

    <?php
include 'database.php';
$db = new database();

$data = $db->exportdatabase();

$out = '';
$out .= 'GSEQ,BRAND,TITLE,SIMAGE,SPRICE,WEIG,DIMENSIONS,ASIN,CATEGORYNAME,MODELNO';
$out .="\n";

foreach($data as $items){
    $out .=' '.$items['GSEQ'].', '.$items['BRAND'].', '.$items['TITLE'].', '.$items['SIMAGE'].', '.$items['SPRICE'].', '.$items['WEIG'].', '.$items['DIMENSIONS'].' 
    '.$items['ASIN'].', '.$items['CATEGORYNAME'].', '.$items['MODELNO'].'
    ';
    $out .="\n"; 
    //var_dump($items);
}

header('Content-Description: File Transfer');
header("Content-Type: application/csv") ;
header("Content-Disposition: attachment; filename=Data.csv");
header("Expires: 0");
echo $out;
exit;   
?>

どうすればこの問題を修正できますか?

4

2 に答える 2

4

手始めに、私はPHPがあなたのためにできることを自分でやろうとするのをやめます。自分で行う代わりにfputcsvを使用します:http://php.net/manual/en/function.fputcsv.php。このメソッドは、区切り文字(コンマ)のエスケープも処理します。

その上、csv区切り文字として「、」を使用しないでください。'|'を使用したほうがよいでしょう そのキャラクターはあまり一般的ではないので、分離者として。

于 2013-01-24T09:28:44.127 に答える
0

1つの方法は、引用符( ")を使用して各フィールドをラップすることです。

もう1つは、str_replaceを使用して、面倒な「、」を別の文字に置き換えることです。

于 2013-01-24T09:40:05.167 に答える