人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

cgiのフォームを受けるサブルーチンでhttp://www.geocities.jp/mac1979aco/text.txtに記述したものがあるのですが、フォーム中に記述した改行を反映させたいのですがどうすれば良いのでしょうか?

●質問者: cetos
●カテゴリ:ウェブ制作
✍キーワード:CGI サブルーチン 記述
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hatetena
●24ポイント

http://ponk.jp/perl_bbs/index.php?page=7

CGI(Perl)の基本と掲示板作成 - 掲示板 その3

Perlは久しくさわってないので自信は無いのですが

comっていう名前のフォームからのデータはちゃんと改行が反映されているようなので

comのデータ以外に改行を反映させたいって事でしょうか

それなら26-27行目辺りの

$value =~ s/¥r¥n//g;

$value =~ s/¥r|¥n//g;

$value =~ s/¥r¥n/

/g;

$value =~ s/¥r|¥n/

/g;

に置き換えると出来ると思います。

(”¥r¥n”と”¥r”と”¥n”が改行を表しているので、これを

タグに置き換える)

◎質問者からの返答

<br>がそのまま表示されてしまいます。

http://www.geocities.jp/mac1979aco/text2.txtにフォームも載せてみました。フォームがいけないのでしょうか?


2 ● hatetena
●23ポイント

http://tohoho.wakusei.ne.jp/lng/199912/99120013.htm

ありゃ、うまく行かなかったみたいですいません。

<br>と表示されたデータはどこにどういう風に表示させていますか?

text.txtで処理したデータをファイルに書き込んでtext2でそのファイルを表示させているのでしょうか。

もしそうなら

$value =~ s/¥r¥n/<br>/g;

$value =~ s/¥r|¥n/<br>/g;

$value =~ s/¥r¥n/¥n/g;

$value =~ s/¥r|¥n/¥n/g;

にしてみて下さい。

もし違うなら<br>が<br>に置き換えられているのが原因の様な気がします。

表示したデータのソースを見て<br>が<>になっているのか見てみて下さい。

ちゃんと<br>と表示されていているなら

print ”Content-type: text/plain¥n¥n”;

print ”Content-type: text/html¥n¥n”;

という記述のどちらがあるかも見てみて下さい

◎質問者からの返答

$value =~ s/¥r¥n/¥n/g;

$value =~ s/¥r|¥n/¥n/g;

も試してみましたがダメでした・・・

<br>はそのまま保存されてるみたいです。

なるほど

print ”Content-type: text/html¥n¥n”;

も関係してくるのですね!

とりあえず

open(READ,”<$morecruit”);

close(READ);

@line = split(/

/,$data);

for $i(0..20){

print”$line[$i]¥n”;

}

で表示してみました。

たとえばhtmlのページで表示するときはどうするのでしょうか?


3 ● raby
●23ポイント

print ”Content-type: text/html¥n¥n”;

ですよ。

今回の場合、デコード部分で タグを無効にしているので、もしコノヘッダーでダメな場合、

$value =~ s/</</g;

$value =~ s/>/>/g;

が、

をいれた後に出てきていないかチェックしてみるのもいいと思います。

それと補足ですが、

$value =~ s/</</g;

$value =~ s/>/>/g;

$value =~ s/<!--(.|¥n)*-->//g;

$value =~ s/<([^>]|¥n)*>//g;

というコードがありますけど、先に <>を実態参照に変換しているんで、後のコード無効になりますよ。

◎質問者からの返答

なるほどありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ