2011-08-05 9 views
2

PHPを使用してMySQLデータベースでCSVエクスポートを実行しようとしています。私が説明欄に達するまで、すべてがうまくいきます。各行は、テキストフィールドの新しい行で終了します。だから、テキストフィールドのすべての行について、私はCSVの新しい行を取得します。私が望むのは、行末の新しい行です。MySQLのテキストフィールドから 'new lines'を削除する

私には、これまでにいくつかの解決策を試してみた:すべてのヘルプは高く評価され

REPLACE(description, '\r\n', '\n')

str_replace(array("\r" , "\n") ,'\n' , $data);

description = REPLACE(description, description, TRIM(BOTH '\r\n' FROM description)) 

+0

どのように重要なコンテンツに新しい行がある - あなたがそれらを取り除く場合は、IFうテキストの意味に影響しますか?それらを再び入れる必要がありますか? – Spudley

+0

この場合、新しい行は厳密には必要ではありません。しかし、将来の見直しのために、新しい行を失うことなく何らかの方法で(つまりエクスポートする)アドバイスできれば、それはすばらしいことになります。 – Paul

+0

適切なCSVライブラリがデータのエスケープ処理を行う必要があります。私はちょっと検索した後、私はこの問題ではPHPにはあまり自信がない。なぜなら、プロセスでファイルIOを必要としないオプションは見つけられないからだ。 1つのオプションは、バックスラッシュを改行文字または改行文字の前に置くことです。 – DGM

答えて

3

なぜあなたは\nに置き換えていますか?

代わりに、''のようにの空の文字列に置き換えてください。あなたが\\nあるいはHTML <br>タグに置き換えてみてください""

+0

あなたは絶対に正しいです。今日の私のブーンモーメントの1つ、コードのコピーと貼り付け。それはまだ動作しませんが、私は '\ n'に置き換えても完全に動作することに気づきました。ありがとう! – Paul

0

""\n\r\nを交換してみてください。これにより、後で改行を再開することができます。

2

改行は常に\nではありません...彼らは、文字エンコーディングに依存\r\n\n\r\n\rすることができます。

新しいcsvデータファイルを作成し、改行をhtml brタグに変更したい場合は、nl2br()関数を使用してください。これは本当に使いやすいです。文字列置換が上記の改行文字で機能しない場合は、データをハードドライブの一時ファイルに書き込んだ後、行ごとに解析してすべての改行を空白に連結します。 PHPのマニュアルには簡単な例があります。

私は実際に反対の問題を抱えていました。そこでは、すでに作成されたcsvファイルを調べて改行を見つけなければなりませんでした。その場合の答えは正規表現を使用していましたが、データの最初の列と最後の列は、その間のすべてのデータを解析して取得できるほどユニークでした。もう1つの選択肢は、すべての改行を削除し、列の数に基づいてデータを収集することでした。

0

私は通常preg_replace()

preg_replace("/\r|\n/", "", $data); 

使用しかし、あなたは常に(それが高速です)str_replace()を使用することができます

str_replace(array("\r", "\n"), "", $data); 
関連する問題