テキストエリアにファイルの改行コードを含めて編集する方法

このQ&Aのポイント
  • テキストエリアからテキストファイルを読み込む際、改行コードが正しく表示されないため、最後の一行しか表示されません。
  • テキストエリアを使用したテキストファイルの編集と上書き保存を行いたい場合、以下の手順を実行します。
  • サブルーチンを使用し、コメントファイルの読み込み、編集画面の表示、上書き保存を行います。
回答を見る
  • ベストアンサー

テキストエリアにテキストファイルを改行コードごと読み出すには

ただ今勉強中のCGIを使って、テキストファイルの編集・上書き保存をテキストエリアから行いたいのですが、テキストエリアに読み込む時に改行コードが読み込めないためか、最後の一行しか表示できません。どのようにすると、改行コードを含めて編集できるのでしょうか? その「できないコード(サブルーチン)」は↓になります。 $commentfile = "comment.txt"; ■ 読み出し sub read_commentfile { local($masg); open(IN, $commentfile); while (<IN>) {$masg = join('',$_);        $massage = $masg; } close(IN); } ■ コメントの編集画面 sub comment { local($html); &read_commentfile; #HTML作成 $html = << "EOM"; <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=$charset"> <title>コメントの編集</title> </head> <body> <form action="$self" method=post> <input type=hidden name=mode value="savecomment"> <hr> コメント<br> <textarea name=masg cols=40 rows=4>$massage</textarea> <br> <input type=submit value=" 更新 "> </form> <hr> </body> </html> EOM &print_html($html); } ■ 上書き保存 sub savecomment { local(@text); push(@text, "$FORM{'masg'}\n"); open(OUT, ">$commentfile"); print OUT @text; close(OUT); } 本来でしたら、ファイルのロック・解除、表ダグ、パスワード等の記述もあるのですが、省いてあります。 よろしくお願い致します。

  • CGI
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • gon987
  • ベストアンサー率16% (53/313)
回答No.1

while (<IN>) {$masg = join('',$_);        $massage = $masg; } そもそもこのループで何をしたい? と言うか何をしているのかわかっていますか? それがわかれば自ずとどうすればいいのかわかるはずです。

hage_1000
質問者

お礼

さっそくのご回答ありがとうございます。もう一度見直します。

関連するQ&A

  • テキストエリア内で改行するには。

    次のスクリプトを実行すると、テキストエリア内に 01234560 と数字が表示されますが、これを 0 1 2 . というように改行も含めてテキストエリアに出力するにはどうすればよいでしょうか。 ¥nという文字を使用するのでしょうか? <html> <head> <script language="JavaScript"> <!-- var textA="" function my1() {for (i=0;i<11;i++){textA=textA+new String(i)} document.form1.text1.value=textA;} //--> </script> </head> <body> <form name="form1"> <textarea name="text1" size="10"></textarea> <input type="button" value="CLICK!" onClick="my1();"> </form> </body> </html>

  • DOMによる、テキストエリアの内容の書き換え

    以下コードを記述し、test.htmlで保存しました。 「ボタンがクリックされたとき、テキストエリアボックスの内容が書き換わる」 と言うことを想定し、作成してみました。 ところが、ボタンをクリックしても、テキストエリアが書き換わりません。 elm[0].Valueでは、駄目なのでしょうか。 ボタンをクリックしたとき、関数までは動いていることは確認できたのですが。 (alertで確認済み) ご教授お願いします。 ==========以下内容====== <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>テキストエリア書き直し</title> </head> <body> <h1>テスト</h1> <p>テキストエリアの書き換え</p> <script type="text/javascript"> <!-- function syutoku(){ var elm=document.getElementsByName('textarea1'); elm[0].Value="書き直し"; //alert(elm[0]); } --> </script> <hr> <p>テキストエリアを書き直します。</p> <form name="form1"> <p><input type="button" value="ボタン" onClick="syutoku()"></p> <p><textarea cols="40" rows="4" name="textarea1"> テキスト書き直しエリア</textarea></p> </form> <hr> </body> </html>

  • オンマウスでテキストエリアにテキスト表示

    現在、「猫」という文字にカーソルを合わせると text1のテキストエリアに 「ニャンと鳴く」と表示されるスクリプトを作成しました。 記述の一部ですが下に示します。 <form name="form1"> <TEXTAREA name="text1" rows="5" cols="40"></TEXTAREA> </form> <span onmouseover="txt_dsp('text1','ニャンと鳴く');"onmouseout="txt_dsp('text1', '');">猫</span><br> 教えていただきたいのは'ニャンと鳴く'という部分を msg.txtというテキストファイルに書かれた'ニャンと鳴く' で表示したいのですが、どのような記述にしたらよろしいでしょうか? よろしくお願い致します。

  • テキストエリアに入力した改行コードを保持したい

    テキストエリアにコメントを入力して、その内容をDBに保存し、別ページで表示させる入力ページの作成で、フォーム内に ・テキストエリアを設置 ・その下に「プレビュー」ボタンを設置 ・その下にプレビューが表示されるエリアを設置 ・一番下にsubmitボタンを設置 test1.phpにて <form name ="form1" method="post" action="test2.php"> <table> <tr><td> <text area name ="comment" id ="comment"> </textarea> </td></tr> <tr><td> <a href="javascript:void(0);" onclick="preview_comment(); "> <img src="preview.jpg"> </a> </td></tr> <tr><td> <span id="preview_comment"> プレビュー </span> </td></tr> </table> <div><input type="submit" value ="submit"></div> </form> head部分に <script language="JavaScript"> <!-- function preview_comment() {var comment_details=document.getElementById("comment").value; document.getElementById("preview_comment").innerHTML=comment_details; } //--> </script> を設置しました。 テキストエリアにコメントを入力し、改行がある場合はその改行コードを保持した状態がプレビューとして表示され、確認をしてOKだったらSubmit、という処理を考えているのですが、改行コードがなくなってしまいます。 改行コードを維持したままプレビューエリアにコメントを表示させることはできますでしょうか? どこを修正すればいいか教えて下さい。

  • javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。

    javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。 別窓ページにてtest.cgiを呼び出し、そのCGIに値を渡したいのですが、 一応値はテキスト形式で渡せるのですが、テキストエリアで入力したものの 改行コードが消えてしまいます。何か良い方法があれば、教えて下さい。 <FORM name="test" ACTION="javascript:test_window_open('/cgi-bin/test.cgi?bikou='+document.test.bikou.value);"> : : <TEXTAREA rows="8" cols="50" name="bikou"></TEXTAREA>

  • MT コメントフォームのテキストエリアの『横幅』を変更したい

    ブログテンプレートをデフォルトを元に編集しています。 エントリーテンプレートを編集しているときに気づいたのですが、コメントフォームのテキストエリアの横幅の値を変えても、ある幅までにしか縮みません。もしかしたら編集する場所が間違っているかもしれませんが、お助け願います。 ついでに編集したあとのコメントフォームの例です。 <label for="comment-author">名前:</label> <input id="comment-author" name="author" size="20" /> <p id="comments-open-text"> <label for="comment-text">コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label> <textarea id="comment-text" name="text" rows="5" cols="40"></textarea> </p>

  • テキストファイルの改行コード???

    こんにちは。よろしくお願いします。 テキストファイルをVBScriptで読み込ませ、ブラウザ上に表示させようと思っているのですが上手くいきません。知恵をお貸し願えませんでしょうか? 1.表示させたい「本文」をブラウザ上から入力する。(TEXTAREAを利用し、入力後にボタンを押すとテキストファイルに内容を書き込む。 2.表示用のページに行くと1のテキストファイルを読み込み、ソース上にテキスト内容を挿入するようなイメージにしたい。 「2」をソース上に書き込まないで、TEXTAREA内に書き込むようにすれば問題無く、改行されて表示されるのですが、ソース上に書き出すことによって、「1」の書き込みの際に簡単なタグを使用したファイルを作成し、「2」で反映したいと思って、上記のような方法を考えています。 read_file = ファイル名 '--- オブジェクト作成 --- Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") '--- ファイルを開く(読み取り専用、ファイルが存在しないときは新規作成) --- Set ObjTS = ObjFSO.OpenTextFile(Server.Mappath(read_file),1,True) '--- ファイルのデータを表示 --- Do Until ObjTS.AtEndofStream     setWD = setWD & ObjTS.ReadLine & Chr(10) Loop ReadFile = setWD で、上のReadFileに対して replaceで改行コードを<BR>に置き換えようにも、調べていたら、vbCrLfだの1310だのLF+CRだの。。。いっぱい出てきてよく分かりません。 どなたか、お知恵をお貸しくださいませんでしょうか?よろしくお願いします。

  • ローカルファイルの表示

    ローカルのテキストを読込み、下記のようなテキストエリア内へ表示する事は可能でしょうか? java scriptでやってみたのですが、ローカルでしか無理なようでした。 CGIではどうか教えて頂けませんか? 初心者で申し訳ありませんが、宜しくお願い致します。 <form name="form1"> <input type=file name="file"> <textarea rows="30" cols="30" name="text1"> (ここへローカルのテキストファイルを表示したい。) </textarea>

    • ベストアンサー
    • CGI
  • 入力したテキストを置換するプログラミングを作りたいのですが上手くいかず

    入力したテキストを置換するプログラミングを作りたいのですが上手くいかず困っています。 テキストエリアに文章を入力し、 次に置換前の文字と置換後の文字をそれぞれ入力する形にして置換をしようと考えています。 最終的に置換前の文字と置換後の文字を入力する欄を複数用意して 複数の置換を一度で行ないたいと思っています。 ですが下記の「a1」に入力した置換前の文字全て削除され「a2」の内容に変換されません。 初心者なので根本的に間違ってるかもしれませんが、わかる方よければ教えてください。 ----------------- <form method="post" action="form.cgi"> <textarea name="chikan" rows="10" cols="70"></textarea><br> <input type="text" name="a1" size="50">を<input type="text" name="a2" size="50">に変換<br><br> </p> <p><input type="submit" value="置換"></p> </form> ----------------- ----------------- #!/usr/local/bin/perl if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'}); } else { $alldata = $ENV{'QUERY_STRING'}; } foreach $data (split(/&/, $alldata)) { ($key, $value) = split(/=/, $data); $value =~ s/\+/ /g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $value =~ s/\t//g; $value =~ s/\n//; $in{"$key"} = $value; $in{'chikan'} =~ s/\Q$in{'a1'}\E/$in{'a2'}/g; } print"Content-type: text/html\n\n"; print <<"EOM"; <html> <head><title></title> </head> <body> <textarea name=area rows=50 cols=70> $in{'chikan'} </textarea> </form> </body> </html> EOM exit; -------------------------

    • ベストアンサー
    • CGI
  • Javascriptで複数のテキストエリアの文字列を連結させたいです

    Javascriptで複数のテキストエリアの文字列を連結させたいです。 初めまして、 お世話になります。 ------------------------------------------------- <html> <head> <title>無題ドキュメント</title> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="form1" method="post" action=""> いつ<br> <textarea name="when"></textarea> <br> <br> どこで<br> <textarea name="where"></textarea> <br> <br> だれが<br> <textarea name="who"></textarea> <br> <br> どうした<br> <textarea name="what"></textarea> <br> <input type="submit" name="submit" value="連結"> <input type="reset" name="submit" value="リセット"> <br> <br> いつどこでだれががどうした。<br> <textarea name="textfield"></textarea> </form> </body> </html> ------------------------------------------------- というHTMLがあったとして ボタンを押したら文字列を連結させたいのです。 その際、入力したテキストフィールドで文字列が改行をされてあった場合 それをそのまま反映して表示させたいのです。 ぜひよろしくお願いします。