[PHP-users 3138] Re: textareaの内容をCSV に書きたいが
php-users@php.gr.jp
php-users@php.gr.jp
Fri, 26 Oct 2001 16:18:09 +0900
SUMiです。
# 山盛りレスのつきそうな予感…
> こんにちは。takaesuといいます。
>
> #PHPというより、コーディング技術不足から来る質問かもしれません。
>
> HTMLのTEXTAREAに入力された内容をCSVに書き込む際の問題です。
> ご存知のとおりTEXTAREAの内容には改行コードが含まれますが
> CSVは改行がレコードの区切りなので何らかの対応が必要です。
> また、クライアントにより改行コードもまちまちです。
>
> $a = "abc\r\nxyz"; // Windows
> $a = "abc\nxyz"; // Linux
> $a = "abc\rxyz"; // Mac?
>
> これらのデータの改行コードを表示可能な文字に置換しようと
> 考えました。すなわち、
> 'abc\nxyz'; // シングルクォートで囲ったよ
> の様な形に変換してCSVに書き込む考えです。
> #元々のデータに '\n'という文字列が含まれているというのは無し(^^;
私ならばどんなクライアントのときでも
$a = "abc\\nxyz";
となるように変換すると思います。
後で読み込むときに変換するのも面倒なので。
> で、以下の様に安易にやってみたのですがダメでした。
> $off_str = strtr($off, "\r\n", "\\r\\n"); // 改行を見える形に
> $off_str = strtr($off_str, "\n", "\\n"); // 改行を見える形に
> $off_str = strtr($off_str, "\r", "\\r"); // 改行を見える形に
takaesuさんのやりたいようにするならば
$off_str = strtr($off, "\n", "\\n"); // 改行を見える形に
$off_str = strtr($off_str, "\r", "\\r"); // 改行を見える形に
これでよいのでは?
$off_str = strtr($off, "\r\n", "\\r\\n"); // 改行を見える形に
これもあると、2重に変換してしまうことになり、
\r\n -> \\\r\\\n
となるでしょう。
> ということは文字列を1バイトづつ見て置換して行くしかないのでしょうか?
> もっとスマートな方法があるような気がします。
> 上級者の方々、ご指導ください。
> #えっ、自分で関数作って、経験を積んで精進しろって・・・
# そう思うならMLに投げるなというレスが聞こえてきそうです。