0

私のコードでは、CSV エクスポートの mysql テーブルから各フィールドのすべてのコンマを保持する必要があります...

このために、すべてのフィールドに二重引用符を使用しました。このコードは、Linux システムで完全に実行されています。Windows で同じコードを実行している間、エクスポートされた CSV ファイルにも二重引用符が表示されます。これの問題は何ですか? なぜこのようなことが起こっているのか誰か教えてもらえますか?

    function  arrayToCSV($array, $header_row = true, $col_sep = ",", $row_sep = "\n", $qut = '"',$pgeTyp ="")
    {
    /*col_sep =htmlentities($col_sep);
    $row_sep =htmlentities($row_sep);
    $qut =htmlentities($qut);*/
    if (!is_array($array) or !is_array($array[0])) return false;
    //Header row.
    if ($header_row)
    {
    foreach ($array[0] as $key => $val)
    {
    //Escaping quotes.
    $key = str_replace($qut, "$qut$qut", $key);
    $output .= $col_sep.$qut.$key.$qut;
    }
    $output = substr($output, 1)."\n".$row_sep;
    }
    //Data rows.
    foreach ($array as $key => $val)
    {
    $tmp = '';

    foreach ($val as $cell_key => $cell_val)
    {  
    if($pgeTyp!="twitter" && $pagTyp!="jigsaw" && $pgeTyp=="")
    $timeValue = @checkTimeStamp($cell_val);
    else  $timeValue = '';
    if($timeValue=="True")
    {
    $cell_val = str_replace($qut, "$qut$qut", convert_time_zone($cell_val,'d-M-y h:i:s'));
    }
    else
    {
    $cell_val = str_replace($qut, "$qut$qut", $cell_val);
    }

    $tmp .= $col_sep.$qut.$cell_val.$qut;
    }
    $output .= substr($tmp, 1).$row_sep;
    }
    return $output;
    }

関数呼び出しは、

$dbResult1[] =array('url_twitter_userid' => $selecttwittermainFtch['url_twitter_userid'],'url_tweet_name' => "$url_tweet_name",'url_twitter_uname' => "$url_twitter_uname",'url_twitter_url' => $selecttwittermainFtch['url_twitter_url'],'url_twitter_location' => "$url_twitter_location",'url_twitter_followers' => $selecttwittermainFtch['url_twitter_followers'],'url_twitter_following' => $selecttwittermainFtch['url_twitter_following'],'url_modified_on' => $modifiedon);   
echo arrayToCSV($dbResult1, true, ", ", "\n",  '','twitter');                 
4

2 に答える 2

0

Windows で任意のプログラム (Guessing Excel) で開く場合、フィールドを区切る/囲むために使用する文字を指定できるはずです。おそらく、コンマを使用して区切りたいだけで、コンマを囲む二重引用符を無視していると仮定しているだけです。

于 2013-04-04T12:47:30.150 に答える