POSTで改行コードを受け渡すには

このQ&Aのポイント
  • 色々なテキストファイルからCSVファイルを生成するフォームを作成中ですが、改行コードをPOSTで受け渡すとセパレートできません。どう解消すれば良いでしょうか?
  • テキストファイルからCSVファイルを生成するフォームを作成中ですが、改行コードをPOSTで受け渡す際に問題が発生しています。解消方法を教えてください。
  • フォームにはテキストファイルからCSVファイルを生成する機能がありますが、改行コードをPOSTするとセパレートがうまくできません。どうすれば解消できますか?
回答を見る
  • ベストアンサー

POSTで改行コードを受け渡すには

宜しくお願い致します。 色々なタイプのテキストファイルからカンマ区切りのCSVファイルを生成できるフォームを作っております。 テキストデータの状況によってレコードの終端記号、切出すカラム(フィールド)数、カラム(フィールド)の区切記号もしくは文字数で抽出を好きに設定できるフォームなのですが、改行コード『\n』をPOSTで受け渡すとsplit関数でセパレートできません。 split関数の手前で変数に\nを代入した場合は問題なく配列化できます。 POSTで\記号を受け渡す際に何か問題が発生していると思うのですが、どうしてもうまく解消できません。 文字コードはeuc-jpです。 解消する方法をご教授頂けますと大変助かります。

  • nikuq
  • お礼率75% (477/631)
  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

もしかしたらブラウザ側で勝手に改行を \n かた \r\n に変えている可能性もあるので、 \r\n と \r を \n に置換してみてはいかがでしょうか。

nikuq
質問者

お礼

ありがとうございます。 やってみましがた、だめでした・・・

その他の回答 (2)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

\rとかの問題なら split("\r\n|\n|\r", $data) とか思いましたけど もしかして \n とフォームに入力しているという意味? なら \\n \\\\n みたいにするか必要があるかと。 単純な分解なら explode でも。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況がよくわかりませんが、普通にできませんか? <? if($_POST){ $array=split("\n",$_POST["test"]); print_r($array); } ?> <form method="post"> <textarea name="test"> hoge fuga piyo </textarea> <input type="submit" value="go"> </form>

関連するQ&A

  • テキストボックス内で改行したいです。

    テキストボックス内で改行したいです。 テーブルのフィールドにあるスラッシュ区切りのデータ を抜き取り一行づつ表示することができたのですが スラッシュ6つ目でテキストボックス内で改行して テキストボックス内で隣に表示させたいのです。 どのようにしたらよいでしょうか? 解る方教えてはいただけないでしょうか? よろしくお願いします。 下記は途中までのコードです。 'スラッシュ区切りで分割 vaspl = Split(Nz(Forms![フォーム名]![テキストボックス名]), "/", -1, vbBinaryCompare) Forms![F_N1]![詳細テキストN1] = "" '分割結果を一行づつ表示する For Each vret In vaspl Forms![フォーム名]![詳細テキストN1] = Forms![フォーム名]![テキストボックス名] & vret & vbCrLf Next

  • 改行コードから改行コードまでをスプリットして配列に取り込む方法を教えて

    改行コードから改行コードまでをスプリットして配列に取り込む方法を教えてください。 ファイル「sample.txt」の中に 文字列A 文字列B 文字列C 文字列D 文字列E 文字列F 文字列G と書かれていたとします。このファイルを開き、配列@listに @list = 文字列A\r\n文字列B\r\n文字列C\r\n,文字列D\r\n文字列E\r\n,文字列F\r\n文字列G\r\n となるようなコードを教えてください。 要は二重改行コード\r\n\r\nをスプリッタとして複数の行を配列に取り込む方法です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • textareaタグに入力された改行コードの扱い

    PHPとMySQLを利用して簡単なWEBアプリを作っています。 <textarea>内に入力された文字列をMySQLにINSERTする際、使用しているブラウザによって改行コードの文字数が異なるため、MySQLにINSERTされる文字数が異なってしまいます。具体的にいうと、 --MySQL仕様-- <textarea>内のデータを、MySQLのとあるtableにINSERTする。 そのtableの<textarea>のデータを登録するcolumnにvarchar(1000)を指定している。 --PHP仕様-- <textarea>内のデータをPOSTより受け取り、其の生データを上記設定したcolumnにINSERTする。 (文字数チェックの際、\r\nを\nに変換し、改行コードを1文字として解釈させ、カウントしている。) そのデータを訪問者が閲覧できるようにpreg_replaceで改行コードを<br />に変換し表示している。 INSERTされたデータは再編集できるよう、編集ページを設けている。 ◆問題 ブラウザごとで<textarea>内の改行コードが異なるため、文字数カウントの際、\n、\r、\r\nによって文字数にズレが生じてしまい、その結果varchar(1000)で設定したcolumnでは使用したブラウザによってINSERT可能な文字数が異なってしまう。 ◆質問 ブラウザによって出力される改行コードが異なるため、MySQLのtableにINSERTされる文字数が異なってしまいます。改行コードを1文字と解釈し、ブラウザによる差異をなくす良い方法はありませんか? --自身で考えた方法-- ・varchar(1000)を例えばvarchar(1200)などとし、PHP側のみで文字数の制限を掛ける。 ・一部のサイトでは\r\nを\nに変換し、INSERTするって方法が記載ありました。この方法を選択すると、再編集のページでブラウザを判別し、\nを\r\nに変換する手間があるので仕様変更に手間がかかりそう。 以上となります。独学の自分には「自身で考えた方法」しか思い浮かばず、MySQLに登録する際、ブラウザによる改行コードの文字数の差異の良い方法が浮かびませんでした。何か良い方法をご教授いただけませんでしょうか?宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 改行コードについて

    phpで開発をしています。 テキストファイルに文字列を出力する際に、改行コードを扱う以下のような場合について、 ①$str='ab\ncd'; ②$str="ab\ncd"; ①の変数の内容を出力すると\nがそのまま出力されます。 ②の変数の内容を出力すると改行されて出力されます。 質問ですが、この二つの違いについては、 ①のときは\nという文字として出力された。 ②のときは改行コードとして出力された。 (バイトコードで見ると、二つのコードは違っている?) という認識で良いのでしょうか。 ご教示いただけますと幸いです。

    • ベストアンサー
    • PHP
  • 改行コードについて

    ファイルの文字コードはutf-8で改行コードはLFです。 メール送信時にメール文面の一部にいれるテキストを mysqlに保存しています。 メール送信のソース内でデータを読み込み送信までは できているのですが改行コードを変換したく $msg = str_replace("\r\n", "\n", $msg); とやってみましたが改行されず普通に\r\nと表示され うまく変換ができません。 いろいろと試した結果以下のソースでは正常に改行されました。 $msg = str_replace("\\r\\n", "\n", $msg); メール送信前にデバッグでしてみましたが読み込むデータの 改行部分は\r\nとなっているのは確認済みです。 \を多くつければ改行はできるようなのですがこれは仕様なの でしょうか? またmysqlに入れてあるデータはフォームから入力し登録 しているのですがLFの改行コードは\nなので登録時に\r\nではなく \nと変換してからmysqlに登録するのがいいものなのでしょうか?

    • 締切済み
    • PHP
  • 【C#】特定の改行コードのみで1行ずつ取得したい

    C#でツールを作成しています。 テキストファイルの中を1行ずつ読み取りたいです。 ただし、改行コード \r\n と \n が混在しており、 \r\n までを1行として取得したいのです。 ReadToEndで一旦すべての文字列を取得し、 Split("\r\n")で分割という方法で解決はするのですが ファイルサイズが膨大な場合、どうしても処理が重くなってしまいます。 ReadLineなどで上手くできる方法はないでしょうか? よろしくお願いします。

  • 改行コード変換

    先に「chompの使い方」で質問したものです。 文字コードを調べたところ、改行が「^M」で表示されていました。 テキスト文書ファイルもCGIプログラムも文字コードはEUCにしてありますし、改行コードもLFにしているんですが、フォームで入力される改行コードはCR+LFになっているようです。 これはどうやって制御すれば(全ての改行をLFにする)よいのでしょうか? ご教示いただけるとうれしいです。よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • C# 文字列を改行コードで分割

    C# 文字列を改行コードで分割 テキストボックスに記載された文字列を1行ごとに取り出そうと思い string[] strs = textBox1.Text.Split('\n'); とコーディングしたら、末尾に\rがついてしまいました。 末尾の\rを削除するコードを追加して書けばよいのですが、改行コード\r\nで分割する方法ありましたらお教えください。

  • 改行コードについて

    改行コードがよく解らないので説明お願いします 様々なサイトの改行コードの説明で LinuxはLF MacはCR WindowsはCRLFと説明しています 私の認識では LF=\n CR=\r CRLF=\r\n だと思っていました ここで疑問なのですが 確かに私の利用した環境ではLinuxの改行コードは\n, Windwosの改行コードは\r\nでした ところがMacの標準のメモ帳(テキストエディット)で文字を入力しても改行コードは\nです 確認方法は od -cというコマンドとfileというコマンドです これはつまりCRではなくLFということですよね? では、なぜ多くのサイトではMacはCRと説明しているのでしょうか? そもそもCR=\rという認識が間違ってるのでしょうか? よろしくお願いします

  • 改行コードについて

    HTMLフォームのテキストエリアで改行した場合の処理についてご質問します。 Windowsのローカル環境で試しています。 改行コードLFでPHPを作成しています。 ○改行コードの認識 LF(\n) Unix,Mac OS X CR(\r) Mac OS 9 CRLF(\r\n) ○テキストエリアからの入力値の処理 CRLF、CRをLFに変換しています。 $value= str_replace ("\r\n", "\n", $value); $value = str_replace ("\r", "\n", $value); このあとDBに値を格納しています。 ○出力の際の処理 DBから値を取得。 phpのprint関数で下記を出力。 <textarea >${value}</textarea> 上記処理で、ローカル、サーバともに正常に動作しています。 しかし改行コードがLF(\n)なのでCRLF(\r\n)のWindowsで表示したときには問題が起きそうな気がします(実際には正常に動作)。 なにかしっくりこなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう