データが多いとエラーになる:改行をbrタグに変換
- フォームから受け取ったデータに改行があれば<br />に変換。さらに<br />が2つ続いたら</p><p>に変換。
- 入力するデータが少ない(100文字程度)時は、問題なく処理されますが、データが多い(200~300文字程度)とエラー(Premature end of script headers:hoge.cgi)になります。
- PCのスペックの問題なのでしょうか。
- ベストアンサー
データが多いとエラーになる:改行をbrタグに変換
フォームから受け取ったデータに改行があれば<br />に変換。 さらに<br />が2つ続いたら</p><p>に変換。 それを、テキストエリアに表示したいのですが、次のようなコードを書いたところ、 入力するデータが少ない(100文字程度)時は、問題なく処理されますが、データが多い(200~300文字程度)とエラー(Premature end of script headers:hoge.cgi)になります。 どこがいけないのか教えて下さい。 PCのスペックの問題なのでしょうか。 送り側(htmlのフォーム)の該当箇所 <textarea name="reviw" id="reviw" rows="8" cols="46"></textarea> CGIは 冒頭で 受け取ったデータの改行コードは、\nに変換し $in{$key} = $val; の形でセットしてあります。 print "Content-type: text/html\n\n"; (中略) print <<'CK13'; <tr> <td> <textarea name="tagoutput" cols="70" rows="10" onclick="this.focus();this.select()"> CK13 print '<p>'; &reviw_put; print <<'CKouttag6'; </p> </textarea> </td></tr> CKouttag6 (後略) がhtml出力部分で、 サブルーチンは sub reviw_put { $in{'reviw'} =~ s/\x0A/<br \/>/g; $in{'reviw'} =~ s/(<br \/>){2}/<\/p><p>/g; print "$in{'reviw'}"; } です。
- candystore
- お礼率87% (43/49)
- Perl
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 恐らくデータのサイズが32768バイトを超えているのが原因かもしれません。 参考サイトを載せますね。 #OKWaveでも話題に出てたようです。 http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2FFileHandle%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB#i13 http://okwave.jp/qa1493606.html
関連するQ&A
- 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
- テキストエリア内でタグ<BR>を使わずにenterキーで改行したい
myshop.cgiという、フリーのcgiを使いたくて、超初心者なりに色々 調べながらもなんとか思い通りに出来てきたんですが、一つだけ どうしても自分では解決できなくて、困ってます。 enterキーでは改行できず、<BR>でしか改行できないテキストエリア内に、 ある文章をコピペしたいんですが、コピペした後に、いちいち<BR>を 入れるのが面倒なんで、enterキーで改行できるようにしたいんです。 しかし、どこをどういじればいいのかさっぱりわからなくて・・・。 とりあえず悩んでる付近のコードを載せておきます。 超初心者です!よろしくお願いします! 解決したいテキストエリアは、「サイトの紹介文」を入力するとこです。 ------------------------------------------------------------- print <<"EOF"; </select>$nini</td> </tr> <tr> <td>カテゴリ3 <select name="ct3"> <option value="">選択しない</optin> EOF if ($use_sub) { foreach (0 .. $#cates) { @SUB = split(/\s+/, $subct[$_]); $i=0; foreach $j (@SUB) { print qq( <option value="$_\,$i">$cates[$_] » $j</option>\n); $i++; } } } if (!$print_url) { $nourl = qq(<span style="color:red;">現在非表\示に設定されています。</span> ); } print <<'EOF'; </select>$nini</td> </tr> <tr> <td>サイトタイトル <small>(タグ利用可\能\ / 同じECサイトのテキスト広告が効果的)</small><br> <input type="text" name="tl" size="68"></td> <tr> <tr> <td>バナーのHTMLコード <small>(アフィリエイト仲介サイトからコピー&ペーストして下さい。)</small><br> <textarea name="code" cols="54" rows="8"></textarea></td> </tr> <tr> <td>サイトの紹介文 <small>(タグ利用可\能\ / 但し改行は反映されないので<span style="font-weight:bold;"><br>を使用</span>して下さい。)</small><br> <textarea name="msg" cols="54" rows="20"><BR><BR><BR><BR></textarea></td> </tr> <tr> <td>価格 <small>(タグも利用可\能\)</small><br> <input type="text" name="url" size="68"></td> <tr> <tr> <td>サイトに関係の深いキーワード <small>(任意。検索で使用、5個までで最大文字数は20文字。)<br> <input size="14" type="text" name="key1" maxlength="20"> <input size="14" type="text" name="key2" maxlength="20"> <input size="14" type="text" name="key3" maxlength="20"> <input size="14" type="text" name="key4" maxlength="20"> <input size="14" type="text" name="key5" maxlength="20"></td> </tr> <tr> <td>サイト紹介文の位置<br> <input type="radio" name="line" value="0" id="bot" checked><label for="bot">バナーの下</label> <input type="radio" name="line" value="1" id="sid"><label for="sid">バナーの横</label></td> </tr> <tr> <td>オススメマーク<br> <input type="radio" name="rec" value="0" id="ron" checked><label for="ron">付けない</label> <input type="radio" name="rec" value="1" id="rof"><label for="rof">付ける</label></td> </tr> <tr> <td>表\示状態 (非アクティブにチェックを入れると一覧には表\示されません。)<br> <input type="checkbox" name="no_act" value="1" id="nact"><label for="nact">非アクティブにする</label></td> </tr> <tr> <td align="center"><br> <input type="submit" value=" 登録する "><input type="reset" value="リセット"> </td> </tr> </table> </form> </div> </body> </html> EOF exit;
- ベストアンサー
- CGI
- textarea内のタグを反映させたいのですが
http://okweb.jp/kotaeru.php3?q=984300を参考に 改行を犠牲にして自動リンクを利用できるようにしたのですが、 HTMLの一部に編集内容を反映したいため FONTタグ等も利用したいんです。 何か良い方法はありませんでしょうか? よろしくお願いします。 <?PHP 文字制限のため省略ですが参考元と同様です。 ?> <html> <title>テキストファイルのデータ更新</title> </head> <body> <form method="post" action="edit.php"> data1の変更 - <textarea name ="data1" rows="5" cols="40"><?php echo preg_replace("/<br>/", "\n", $ini['data1']); ?></textarea><br> data2の変更 - <textarea name ="data2" rows="5" cols="40"><?php echo preg_replace("/<br>/", "\n", $ini['data2']); ?></textarea><br> data3の変更 - <textarea name ="data3" rows="5" cols="40"><?php echo preg_replace("/<br>/", "\n", $ini['data3']); ?></textarea><br> <input type="submit" value="送信"> </form> <table> <tr><td>data1</td><td><?PHP echo ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $ini['data1']); ?></td></tr> <tr><td>data2</td><td><?PHP echo ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $ini['data2']); ?></td></tr> <tr><td>data3</td><td><?PHP echo ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $ini['data3']); ?></td></tr> </table> </body> </html>
- 締切済み
- PHP
- TEXTAREAの改行がうまくいきません。
自作で掲示版を作成している、初心者です。現在作成中の掲示版にTEXTAREAに入力し、LOG上では1行目<BR>2行目といった形で改行をBRに置き換えて保存していますが、その修正としてLOGからデータをとり改行状態で表示させたいのですが、 うまく改行されない状態です。下記にLOGより読み込み。タグを\rに置き換えて いますが、TEXTAREAに表示されなく、改行表示どころではありません。 いったいどうすればよいのでしょうか?ご教示をお願いします。 <CGI文> $wkaaa1 = $IXUSERINF{Enaiyo}; データを取得 $wkaaa =~ ¬ag1($wkaaa1); 変換(これがおかしい?) $mesbuff .= "<TR><TD nowrap ><TEXTAREA ROW=\"10\" COLS=\"48\" NAME=\"Enaiyo\" WRAP=\"soft\">$wkaaa </TEXTAREA></TD></TR>"; <sub> sub notag1 { local($_) = @_; s/&/&/g; s/"/"/g; s/</</g; s/>/>/g; s/<br>/\n/gi (これで <BR>を\n(改行)にしてるつもり return $_; }
- ベストアンサー
- CGI
- textareaに改行を表示させる
今htmlとphpで下記のプログラムを書いています。 <?php print "<TEXTAREA cols=50 rows=3>"; print $tem2[0]; print "</TEXTAREA>"; ?> ちなに$tem2をprint_rで表示させると図1のようになります。 そして上記のプログラムを実行すると図2のようになり、改行が<br>や<br />となり改行してくれません。 textareaで$tem2[0]を図3のように改行をきちんとして表示させたいと考えております。 どのようにすればよろしいでしょうか? ご存じの方いらっしゃいましたら、できれば具体的に教えていただけないでしょうか? よろしくお願いします。
- 締切済み
- HTML
- 表(<table>)の直前が、改行されてしまう。
表(<table>)の直前が、改行されてしまう。 perlでコーディングしています。データベースはmdbファイルです。 <textarea>内を簡単なWebエディタに見立てて、 <textarea>内へhtmlタグなどで書き込んだデータを、 mdbのメモ型フィールに更新し、これをブラウザで表示させています。 このとき、表(<table>)を表示させるために、<textarea>内に<table><tr><td>タグを入力するのですが、mdbファイルに更新する際に、 <table> <tr> <td> : のように、改行した状態で更新すると、書き込んだ改行分だけ、ブラウザに表示された表の直前が改行されてしまいます。 (mdbファイルに直接書き込んでも同現象となりました。) <table<tr><td>・・・ と改行せずに書き込むと、ブラウザに表示された表の直前は改行されませんでした。 なお、ブラウザに表示させる側のcgiファイルには、改行キー(¥nなど)を改行タグ(<br>)に変換させるために、 $textarea1 =~ s/\r\r/<br>/g; $textarea1 =~ s/\r/<br>/g; $textarea1 =~ s/\n/<br>/g; としているため、これと関係していると思われるのですが、 わたくしとしては、 ●<textarea>内で手入力した改行は、ブラウザ表示に反映させるが、 ●<tabel>・・・・</tabel>の部分は、改行して入力されていても、この改行だけは無視する、 と言った、都合のよいことをしたいのですが・・・、行き詰っております。 perlやcgiの問題ではないかも知れませんが、 どなたか、よいアドバイス、ご提案などございませんでしょうか。 ご教授いただければ、大変助かります。 よろしくお願いします。
- ベストアンサー
- CGI
- textareaの改行の仕方について
文字変数noteには<br>を含むのですが、 下記のプログラムを実行すると<br>がそのままテキストエリアの中に 表示されます。<br>を\r\nや\nに変換しても、それらがそのまま表示されます。 note変数の<br>の箇所で改行してやるには、<br>をどの文字と置換すればいいのでしょうか? print %Q{<textarea rows="5" cols="100" name="title2">#{note}</textarea>}
- ベストアンサー
- その他(プログラミング・開発)
- CGIで改行タグを改行コードに変換ってできますか?
CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?
- ベストアンサー
- CGI
- CGIを使用してtextareaデータをHTMLファイルに変換の改行。
textareaに入れられたデータをCGIを使用して、HTMLファイルに変換しています。 その時に、改行が1行ずつ多く入ってしまうようなのです。 例えばtextareaに あああああ あああ いいい ううう と入っていた場合、できあがったHTMLファイルは あああああ あああ いいい ううう となってしまうのです。 できあがったHTMLファイルを見ても改行が多いわけではなさそうなのですが…。 $buffer =~ tr/+/ /; $buffer =~ s/\n/<BR>/g; $buffer =~ s/'/\'/g; $buffer =~ s/・//g; みたいな感じでなってますが。 おわかりの方よろしくお願いします。
- ベストアンサー
- CGI
お礼
回答ありがとうございます。 原因が全く分からなかったので、とても参考になりました。 データを分割して処理するようにしてみようと思います。 とても助かりました。ありがとうございます!