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;
No.3ベストアンサー
- 回答日時:
サブルーチン decode の
$in{'code'} =~ s/\r\n//g;
$in{'code'} =~ s/\r//g;
$in{'code'} =~ s/\n//g;
$in{'msg'} =~ s/\r\n//g;
$in{'msg'} =~ s/\r//g;
$in{'msg'} =~ s/\n//g;
ですべての改行文字を削除していますから、ここを
$in{'code'} =~ s/\r\n/<br>/g;
$in{'code'} =~ s/\r/<br>/g;
$in{'code'} =~ s/\n/<br>/g;
$in{'msg'} =~ s/\r\n/<br>/g;
$in{'msg'} =~ s/\r/<br>/g;
$in{'msg'} =~ s/\n/<br>/g;
にすれば、とりあえずご希望は叶うでしょう。
キャ~~~!!できましたぁ~~~゜+。ヤッタァ★(o゜∀`从'∀゜o)★ヤッタァ。+゜
ありがとうございます~~~~(@^▽^@)
私ももしかしたら・・って思って似たような事はしてたんですが、
違う場所でやってました(^_^;)
本当にありがとうございましたぁ~~~~!!
No.2
- 回答日時:
前回答の、WindowsOSマシンからは「%0A%0D」、MacOSマシンからは「%0A」、UNIX系OSマシンからは「%0D」にエンコードされて送ってきます。
は、WindowsOSマシンからは「%0D%0A」、MacOSマシンからは「%0D」、UNIX系OSマシンからは「%0A」にエンコードされて送ってきます。
の間違いでした。
ところで、補足内容から推測すると、フォーム受信データのパースには何かのライブラリを使っているようですから、テキストエリアに入力された改行は、perlの改行文字「\n」に変換されているはずです。
そうだとすれば、
unshift(@lines,"$no<>$in{'ct1'}<>$in{'ct2'}<>$in{'ct3'}<>$in{'tl'}<>$in{'code'}<>$in{'msg'}<>$in{'url'}<>$date<>$times<>$in{'key1'}<>$in{'key2'}<>$in{'key3'}<>$in{'key4'}<>$in{'key5'}<>$in{'rec'}<>$in{'line'}<>$in{'no_act'}<>\n");
の前に、
$in{'code'}=~s/\n/<br>/g;
$in{'msg'}=~s/\n/<br>/g;
を挿入すれば良いと思います。
この回答への補足
ありがとうございます!
早速、アドバイス通りやってみたんですが、何も変わりなかったです。゜(゜´ω`゜)゜。
私が何か間違ってるのかもしれませんね・・。
それで、全てのcgiコードを見てもらった方がいいかと思って、
cgiをテキストで保存してサーバーにアップしたんで、
もし良かったら、見てもらえませんか?
↓ ↓ ↓
http://shufumama.chu.jp/myshop.txt
eyterキーで改行させないように設定されてるんでしょうか?
それを解除しないといけないのかな~?
と思って、自分なりに色々調べたりしてるんですが、
どうしてもまだわからなくて・・。
まさに、今書いてるこのテキストフォームのようにenterキーで
改行したいです~~。゜(●'ω'o)゜。
よろしくお願いします!
No.1
- 回答日時:
フォームのテキストエリアに入力された改行(<br>ではなく実際の改行)は、デフォルトのenctypeの場合、WindowsOSマシンからは「%0A%0D」、MacOSマシンからは「%0A」、UNIX系OSマシンからは「%0D」にエンコードされて送ってきます。
ですから、CGIスクリプトのフォーム受信データをパースするところで、この改行コードを「<br>\n」に変換してやれば良いのです。
この回答への補足
アドバイスありがとうございます!!
超初心者なりに色々調べてて、なんとなくそうなのかな~?とは
思ってましたが、具体的にどういう風にタグ?を書けばいいのか
どの場所に書くのがいいのかが、いまいちわからなくて・・(^_^;)
なんとなくこの辺りかな?と思うとこなんですが、違いますか?
↓ ↓ ↓
-----------------------------------------------------
# 新規登録の場合
} else {
# 時間取得
&get_time;
($num,$ct1,$ct2,$ct3,$tl,$code,$msg,$url,$dt,$tm,$k1,$k2,$k3,$k4,$k5,$rec,$line,$no_act) = split(/<>/, $lines[0]);
$no = $num + 1;
$dt2 = $date;
unshift(@lines,"$no<>$in{'ct1'}<>$in{'ct2'}<>$in{'ct3'}<>$in{'tl'}<>$in{'code'}<>$in{'msg'}<>$in{'url'}<>$date<>$times<>$in{'key1'}<>$in{'key2'}<>$in{'key3'}<>$in{'key4'}<>$in{'key5'}<>$in{'rec'}<>$in{'line'}<>$in{'no_act'}<>\n");
open(OUT,">$logfile") || &error("ファイルを開けません » $logfile","lock");
print OUT @lines;
close(OUT);
}
# 登録完了メッセージ
&header;
if ($in{'edit_flag'} eq "true") { $comp = "修正"; }
else { $comp = "登録"; }
if ($in{'rec'} == 1) { $tl_color = $rec_color; } else { $tl_color = $mn_color }
print <<"EOF";
<div style="text-align:center;">
<p><strong style="color:$bd_color;">以下の内容で$comp完了しました。</strong></p>
EOF
--------------------------------------------------------
この辺で合ってるとすれば、具体的にどこにどのように書けばいいのか
教えて頂けると嬉しいんですが・・・。
本当にチンプンカンプンなのにあつかましい事言ってスイマセン!
よろしくお願いします゜・(。>д<。)・゜
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA メール作成について ...
-
number 改行が追加できない
-
Rstudioによるテキストマイニン...
-
エクセルで「改行コード」を「...
-
【HELP!!】Excelから保存したtx...
-
CGIを勉強しています。¥n(改...
-
MACの改行コード変更について教...
-
ホームページビルダーで行間を...
-
perlで、[ \\r\\n , \\n ]の意...
-
改行コードがそのまま表示され...
-
Line Inputにて改行があっても...
-
ポインター引数の関数でコンパ...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
ビットスワップとバイトスワッ...
-
10Mバイトて文字数に すると何...
-
stable diffusionのエラー
-
バイナリとBCDコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA メール作成について ...
-
CGIを勉強しています。¥n(改...
-
改行コードがそのまま表示され...
-
Line Inputにて改行があっても...
-
Rstudioによるテキストマイニン...
-
Excelで、HTMLタグだけを削除す...
-
エクセルで「改行コード」を「...
-
MACの改行コード変更について教...
-
【HELP!!】Excelから保存したtx...
-
ホームページビルダーで行間を...
-
perlで、[ \\r\\n , \\n ]の意...
-
alertの警告文を2行にしたい
-
連想するもの教えてください
-
テキストボックスに入力された...
-
全文表示…の仕方。
-
メモ帳での改行
-
PHP <br /> <br> 結局どっち?
-
改行コードについて
-
brタグについて質問です。
-
if文中で@***(配列変数)って...
おすすめ情報