• ベストアンサー

textareaからの入力で改行or空白(andも含む)を判別する

noname#225520の回答

  • ベストアンサー
noname#225520
noname#225520
回答No.1

改行コードはMacが\r、Windowsが\r\n、Unixが\nですのでこれを全部HTMLタグの<br>に変換するには str =~ s/\r\n/\n/g; str =~ s/\r/\n/g; str =~ s/\n/<br>/g; とすれば良いでしょう。同様にスペースは\sなので str =~ s/\s//g; とすれば空白を除去できます。

noname#32059
質問者

お礼

なるほど それを使うと $str =~ s/\r\n//g; $str =~ s/\n//g; $str =~ s/\s//g; として最後に$strが”空”ということを判別する形でできますね。 回答ありがとうございました

関連するQ&A

  • TEXTAREAの改行がうまくいきません。

    自作で掲示版を作成している、初心者です。現在作成中の掲示版にTEXTAREAに入力し、LOG上では1行目<BR>2行目といった形で改行をBRに置き換えて保存していますが、その修正としてLOGからデータをとり改行状態で表示させたいのですが、 うまく改行されない状態です。下記にLOGより読み込み。タグを\rに置き換えて いますが、TEXTAREAに表示されなく、改行表示どころではありません。 いったいどうすればよいのでしょうか?ご教示をお願いします。 <CGI文> $wkaaa1 = $IXUSERINF{Enaiyo}; データを取得 $wkaaa =~ &notag1($wkaaa1);  変換(これがおかしい?) $mesbuff .= "<TR><TD nowrap ><TEXTAREA ROW=\"10\" COLS=\"48\" NAME=\"Enaiyo\" WRAP=\"soft\">$wkaaa </TEXTAREA></TD></TR>"; <sub> sub notag1 { local($_) = @_; s/&/&amp;/g; s/"/&quot;/g; s/</&lt;/g; s/>/&gt;/g; s/&lt;br&gt;/\n/gi (これで <BR>を\n(改行)にしてるつもり return $_; }

    • ベストアンサー
    • CGI
  • textareaの入力データで無駄な改行が…

    textareaでデータ入力し、perlで拾うと無駄に改行が入ってしまいます。 <textarea name="textarea_data"> a a a </textarea> これをPerlで拾って表示させると a a a と表示されてしまいます。 改行が無駄に一つ入ってしまっているのですが、考えられる原因は何でしょうか? print "$FORM{'textarea_data'}"; で表示させています。\n等は入れていません。

    • ベストアンサー
    • Perl
  • 改行されても空白がずれてしまいます

    カテゴリがMYSQLかもしれません。その場合はご指摘お願いします。 phpとmysqlと使って掲示板のような機能を作っています。 TEXTAREAフォームに改行して文字列を入力し、DBにINSERTで追加します。 表示させるときにSELECTして、nl2br( )を使っています。 表示の際、改行は実行されるのですが  空白(スペース)がTEXTAREAフォーム入力したときと違うように表示されます。 たとえばTEXTAREAフォームでは 本日  10:00~14:00      17:00~23:00 と入力したのにecho で表示させると 本日  10:00~14:00 17:00~23:00 というように改行した行の空白がずれてしまいます。 DBにINSERTするとき、DBから取り出すとき、取り出して表示させたとき、 どの段階でずれるという問題が起きているのでしょうか。 また、どういった対処をすればよろしいでしょうか。 どうかご教授お願いします。 以下がソースコードの一部です。 //入力して追加する部分 <FORM method="POST" action="test1.php"> <TEXTAREA NAME="test1" COLS="60" ROWS="7"></TEXTAREA> <INPUT type="submit" name="submit" value="追加"> で入力し送信して,POSTメソッドで受け取り $add_text = $_POST["test1"]; mysql_query("insert into `test`(`text`) VALUES('$add_text')"); 「test」というテーブルに追加しています。 //表示する部分 $result = mysql_query("select * from test"); $rows = mysql_num_rows($result); if($rows == 0){ } else{ while($row=mysql_fetch_array($result)){ echo nl2br($row['text']); }

    • ベストアンサー
    • PHP
  • <TEXTAREA>の文字入力が自動改行されません

    私の環境はWindows8でIE11です。 実は私が作ったPerlの掲示板の<TEXTAREA>に文字入力をしようとしたら、自動改行されないのに気付きました。 ソースは、次の通りです。 <textarea name=comment cols=70 rows=12 wrap=soft style="font-size:15px"></textarea> どっかに問題があるのでしょうか? それとも、私のPCの環境のせいでしょうか? ちなみに、他のサイトの<TEXTAREA>だと私のPCでも自動改行されます。

  • TEXTAREAと改行について

    環境:ASP(VBScript) DB:Access2000 初心者です。 HTMLのTEXTAREAで入力した文字列を DBに書き込むと最初の改行以降が書き込まれません。 なにがいい方法はありませんか?

  • [PHP]formのtextareaの改行を消せない

    [PHP]formのtextareaの改行を消せない formのtextareaに改行して数行のデータを入れ、それを改行毎にexplodeで分けて居るのですが、1個1個のデータから改行の情報が消えません。 textareaに 1234 2345 3456 $data=explode("\n",$_POST[textarea]) で、dataに配列として入れて、 echo $data[0] . "," . $data[1] . "," . $data[2]; と表示させてみると、 1234 ,2345 ,3456 と4ケタの数字のあとに半角スペースが入ります。 HTMLソースで見ると改行されているようです。 str_replace("\n","",$data[0]) とやっても、消えません。 この改行(半角スペース)があるため、 if (mb_strlen($data[0])==4) で、Trueにならなくて困っています。 if (mb_strlen($data[0])==4 or mb_strlen($data[0])==5) とすることで解決は出来るのですが、そのほかでも使用したいので、出来れば最初からこの改行(半角スペース)を消したいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • textarea内での改行の条件

    投稿フォームなどのtextarea内で、改行の条件を決めたいと思っています。 具体的には、「。、・)」や「.,-)」などが文章末尾にある場合に限り改行を許可するといった感じです。 上記の許可文字以外でEnterキーを押して改行しても、実際には改行されずに処理が行われる方法が希望です。 textarea内の値が$mesの場合、 $kai = " 。..、??!!-ー-"; $mes =~ s/[^$kai]<br>//g; 上記のように置換をすると、$kaiに設定されている文字などで改行を行っても無効となり、$kai<br>ではOKという感じなんですが、改行が無効となる部分の文字が化けてしまいます。 何か最良な手法がございましたらご教授頂けますと幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • TEXTAREAの改行をデータへ反映

    よろしくお願いします。 フォーム上で入力した値をCSVに反映させるようなものを作っているのですが、TEXTAREAで改行した値がCSVデータ上で改行されなくて困っています。 <TABLE>  ・  ・  ・ <TR> <TD>コメント:</TD> <TD><TEXTAREA NAME="COMMENT" rows="2" cols="40"></TEXTAREA></TD> </TR> </TABLE> 入力した値: ---------- あああ※ いいい※ ううう        ※位置で改行 ---------- CSVデータ内: ~,あああいいいううう webサーバー・・・HP-UX web・・・IE 開発端末・・・windows2000(Tera Term 使用) 以上。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • <TEXTAREA> 1行目の改行・・・。

    HTMLのほうがよいかASPがよいか迷ったのですが 『.asp』ファイル上での話なので、とりあえずココへ 質問させていただきます・・・。 現在、<Form>タグを使って次画面へ値の受け渡しをしています。 その時、<TEXTAREA>タグに入力された内容を 次画面でも<TEXTAREA>に表示させています。(ReadOnlyで) 1行目にイキナリ改行をした場合に、次の画面では その改行が詰まった状態で表示されてしまいます。 例)入力フォームで [1行目] [2行目]あああ [3行目]いいいいい と入れた後、次の画面に行くと [1行目]あああ [2行目]いいいいい になってしまいます。 1行目の改行もそのまま表示させたいのですが、 何か特別なことをさせないとダメなのでしょうか? (現在は特に何もしていません。Request.Formで拾ったものをそのまま表示させてます)

  • textarea へ、改行させたいテキストデータを書き込むには?

    Perlのprint命令では、print '(1)aaaa <BR>(2)bbbb',"\n"; というように、改行させたい箇所に<BR>を挿入すれば改行させられるとおもいます。ところが、print "<textarea> xxx </textarea>" として、CGIで複数行入力領域を書いたときは、xxxのなかに挿入した<BR>はそのまま文字として表示されてしまいます。  改行させるにはどうしたらいいのでしょうか?  どなたか(ひきつづき^^;;)、御教示をいただければ幸いです。

    • ベストアンサー
    • Perl