
自作で掲示版を作成している、初心者です。現在作成中の掲示版に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 $_;
}
No.5ベストアンサー
- 回答日時:
>上記のパターンをそれぞれ入れてみてやってみましたが、
これで上手くいくと思っていたのに残念ですね....
試験的に、改行でない文字に置換できるか確認してみてはどうでしょう。
# $WEnaiyo =~ s/<BR>/HENKAN/g;
# のような感じで。
これでダメなら、改行文字ではなく「置換」そのものに不具合があると考えられます。
ログデータの最後の項目に変化を施すようなので、
これだけで試してみてはどうでしょうか。
# 未テストなのでscript確認してください(汗
open(FH,"$logfile") or die "$!";
foreach(<FH>){
my @line = split(/,/,$_,);
$line[$#line] =~ s/<BR>/HENKAN/g;
print "$line[$#line]\n";
}
close(FH);
この回答への補足
何度も申し訳ありません。上記のひょうに変更したところ、
<BR>を違う文字に変換するようにしましたら、下記のようになりました。
例
AAAAHENKANBBBBHENKANCCCC(といった具合に変換はできましたが)
なぜか改行コードにはおきかわらなく、そのまま詰まって1行で表示されます。
ほんとどうすればいいのでしょうか?
No.4
- 回答日時:
$WEnaiyo =~ s/<BR>/\n/g; を
$WEnaiyo =~ s/<BR>/\r\n/g; か
$WEnaiyo =~ s/<BR>/\r/g; に
して試してみてはどうでしょう。
この回答への補足
おそくなりましてすみません。(レンタルしていたサーバーがダウンしその復旧で...)
上記のパターンをそれぞれ入れてみてやってみましたが、
何もかわらなのです。
元のデータ(LOG)を作成するときに何かたりなのでしょうか?
(JCODE等は使用していません)
もうすこしだけお付き合い願えないでしょうか?
No.3
- 回答日時:
自分がREVISIONモードを作ったときの流れは、
ログデータを@lineに取得....
foreach(@line){
chomp;
($foo,$bar)=split(/,/,$_);
$bar =~ s/<BR>/\n/g;
}
こんな感じでTEXTAREAに$barを改行表示させています。
ここ以外に、関係のありそうな部分はないですか?
しかし表示はされているとの事なので、置換部分に問題があるんだとは思いますが....
文字コードだったり環境が影響している可能性もあるかもですね。
ご参考に、改行コード変換の解説サイトを入れておきます。
参考URL:http://www.din.or.jp/~ohzaki/perl.htm#CRLF_2BR
この回答への補足
so_blue さん、お世話になります。
ご指摘のとおりデータ取得時に下記のように修正し、CGI側はそのまま出力するようにしましたが、結果は、aaabbbcccとつながって1行で出力されます。
ほんと何がいけないんでしょうか?
<sub>
foreach(@buffer) {
($a, ~ ,$WEnaiyo) = split(/,/,$_,);
$WEnaiyo =~ s/<BR>/\n/g;
$IXUSERINF{Enaiyo} = $WEnaiyo;
}
ハッシュがいけないのでしょうか?(多分関係ないと思います)
改行コードが入らないのはなぜ?
No.2
- 回答日時:
自分には、TEXTAREA内で
s/</</g;
s/>/>/g;
にしている理由が分かりませんが....
タグがあると何か不都合があるのでしょうか???
これをなくすか、使う場合はこれより先に、
s/<BR>/\n/g;
で上手く動作しないでしょうか。
この回答への補足
何度もすみません。
<sub>
sub notag1 {
local($_) = @_;
s/<BR>/\n/g; (修正しました)
s/&/&/g;
s/"/"/g;
s/</</g;
s/>/>/g;
s/<br>/\n/gi;
return $_;
}
にしたところ、TEXTAREA内にaaa<BR>bbbb<BR>cccといった形で改行されず、<BR>の文字がそのまま出力されます。
やはりタグを消さないといけなのではないでしょうか?
すぐにでも、回答を締め切り、POINTを差し上げたいのですが、もうすこし初心者に
つきあってください。
No.1
- 回答日時:
> $wkaaa =~ ¬ag1($wkaaa1); 変換(これがおかしい?)
はい。おかしいです。
チルダを取って、$wkaaa = ¬ag1($wkaaa1); にしてください。
この回答への補足
早速の回答ありがとうございます。ご指摘のとおり、チルダをはずしたら
TEXTAREAには表示されるようになりましたが、改行されません。
どうすれば良いか改めて回答をおねがします。
<表示内容>
aaaaabbbbbccccc(1行で表示されます。a b c の間で改行したいのですが)
<希望表示>
aaaaa
bbbbb
ccccc
のように3行にしたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA メール作成について ...
-
chompの使い方
-
number 改行が追加できない
-
Excelで、HTMLタグだけを削除す...
-
char str[256]の256の意味は?
-
UTF-8で5~6バイトになる文字コ...
-
stable diffusionのエラー
-
DataGridViewの特定列に入力さ...
-
10Mバイトて文字数に すると何...
-
バイナリとBCDコード
-
ピクセル,dpiから容量(バイト...
-
Cのプログラムがどうしても動き...
-
機種依存文字をチェックしたい。
-
txtファイルを読み込んで表示関...
-
シフトJISの2バイト文字
-
Console.writeLineで文字化け
-
CD R の書き込み
-
ビットスワップとバイトスワッ...
-
GETメソッドとPOSTメソ...
-
ワイド文字のバイト数が取得で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA メール作成について ...
-
CGIを勉強しています。¥n(改...
-
Rstudioによるテキストマイニン...
-
ホームページビルダーで行間を...
-
改行コードがそのまま表示され...
-
Line Inputにて改行があっても...
-
Excelで、HTMLタグだけを削除す...
-
連想するもの教えてください
-
エクセルで「改行コード」を「...
-
表(<table>)の直前が、改行さ...
-
MACの改行コード変更について教...
-
<wbr>を強制的に入れるには??
-
perlで、[ \\r\\n , \\n ]の意...
-
CGIが改造できない。
-
ファイルのアップロードについて
-
datの改行
-
テキストボックスに入力された...
-
テキストエリアの<br />を非表...
-
メモ帳での改行
-
自動的に改行してくれるソフト
おすすめ情報