0

このコードは csv ファイルを作成します。ただし、コンマは区切りとして使用されるため、フィールドにコンマを出力することは避けました (22 行目を参照)。ここで、フィールドから (キャリッジ リターンと改行) を削除したいと思います。$somecontent の追加 .= str_replace("\n", "", $val); 23行目は機能していないようです。何か案は?

@chmod($export_csv, 0777);
    $fe = @fopen($export_csv."/export.csv", "w+");
    if($fe){           
        $somecontent = "";
        $fields_count = 0;
        // print field headers
        $db->query($sql_view);
        if($row = $db->fetchAssoc()){
            foreach($row as $key => $val){
                if($fields_count++ > 0) $somecontent .= ",";
                $somecontent .= ucfirst($key);
            }
        }
        $somecontent .= "\n"; 

        // print field values
        $db->query($sql_view);
        while($row = $db->fetchAssoc()){
            $fields_count = 0;
            foreach($row as $key => $val){
                if($fields_count++ > 0) $somecontent .= ",";
                $somecontent .= str_replace(",", "", $val);
                $somecontent .= str_replace("\n", "", $val);
            }
            $somecontent .= "\n";                    
        }

        // write some content to the opened file.
        if (fwrite($fe, $somecontent) == FALSE) echo 'file_writing_error'." (export.csv)"; 
        fclose($fe);
    }
4

4 に答える 4

2

fputcsv関数を使用してCSVファイルを書き込みます。PHPにはすでにcsvファイルを書き込む機能があります。

エスケープ、区切り文字を自分で処理する必要はありません。これらはすべてすでに処理されています。

これはあなたのためにこれらすべてのものを処理し、多くの頭痛からあなたを救うでしょう。

于 2011-04-06T07:42:28.567 に答える
1

MySqlから直接行うことができます:

SELECT col1, col2, col3 INTO OUTFILE '/tmp/export.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
于 2011-04-06T07:45:32.100 に答える
0

あなたはどこにいます$somecontent .= str_replace("\n", "", $val)か?あなたのコードでそれを見つけることができません。

そこにstr_replace示されているように、最初のパラメータとして配列を指定できます。したがって、配列に存在する各文字列が2番目のパラメーターに置き換えられます。

例えば、$somecontent .= str_replace(array("\n", "\r"), "", $val);

于 2011-04-06T07:42:55.973 に答える
0

ASCII文字で遊んで、このようなことを試すことができます

$somecontent .= str_replace(CHR(10), " ", $val);
$somecontent .= str_replace(CHR(13), " ", $val); 
于 2011-04-06T07:51:43.190 に答える