ショボ短歌会

自作で掲示版を作成している、初心者です。現在作成中の掲示版にTEXTAREAに入力し、LOG上では1行目<BR>2行目といった形で改行をBRに置き換えて保存していますが、その修正としてLOGからデータをとり改行状態で表示させたいのですが、
うまく改行されない状態です。下記にLOGより読み込み。タグを\rに置き換えて
いますが、TEXTAREAに表示されなく、改行表示どころではありません。
いったいどうすればよいのでしょうか?ご教示をお願いします。

<CGI文>
$wkaaa1 = $IXUSERINF{Enaiyo}; データを取得
$wkaaa =~ &notag1($wkaaa1);  変換(これがおかしい?)
$mesbuff .= "<TR><TD nowrap ><TEXTAREA ROW=\"10\" COLS=\"48\" NAME=\"Enaiyo\" WRAP=\"soft\">$wkaaa </TEXTAREA></TD></TR>";

<sub>
sub notag1 {
local($_) = @_;
s/&/&amp;/g;
s/"/&quot;/g;
s/</&lt;/g;
s/>/&gt;/g;
s/&lt;br&gt;/\n/gi (これで <BR>を\n(改行)にしてるつもり
return $_;
}

A 回答 (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行で表示されます。

ほんとどうすればいいのでしょうか?

補足日時:2002/10/23 22:46
    • good
    • 0

$WEnaiyo =~ s/<BR>/\n/g; を


$WEnaiyo =~ s/<BR>/\r\n/g; か
$WEnaiyo =~ s/<BR>/\r/g; に
して試してみてはどうでしょう。

この回答への補足

おそくなりましてすみません。(レンタルしていたサーバーがダウンしその復旧で...)
上記のパターンをそれぞれ入れてみてやってみましたが、
何もかわらなのです。
元のデータ(LOG)を作成するときに何かたりなのでしょうか?
(JCODE等は使用していません)
もうすこしだけお付き合い願えないでしょうか?

補足日時:2002/10/23 00:03
    • good
    • 0

自分が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;
}

ハッシュがいけないのでしょうか?(多分関係ないと思います)

改行コードが入らないのはなぜ?

補足日時:2002/10/16 00:18
    • good
    • 0

自分には、TEXTAREA内で


s/</&lt;/g;
s/>/&gt;/g;
にしている理由が分かりませんが....
タグがあると何か不都合があるのでしょうか???

これをなくすか、使う場合はこれより先に、
s/<BR>/\n/g;
で上手く動作しないでしょうか。

この回答への補足

何度もすみません。

<sub>
sub notag1 {
local($_) = @_;
s/<BR>/\n/g; (修正しました)
s/&/&amp;/g;
s/"/&quot;/g;
s/</&lt;/g;
s/>/&gt;/g;
s/&lt;br&gt;/\n/gi;
return $_;
}
にしたところ、TEXTAREA内にaaa<BR>bbbb<BR>cccといった形で改行されず、<BR>の文字がそのまま出力されます。
やはりタグを消さないといけなのではないでしょうか?

すぐにでも、回答を締め切り、POINTを差し上げたいのですが、もうすこし初心者に
つきあってください。

補足日時:2002/10/15 01:12
    • good
    • 0

> $wkaaa =~ &notag1($wkaaa1);  変換(これがおかしい?)



はい。おかしいです。
チルダを取って、$wkaaa = &notag1($wkaaa1); にしてください。

この回答への補足

早速の回答ありがとうございます。ご指摘のとおり、チルダをはずしたら
TEXTAREAには表示されるようになりましたが、改行されません。
どうすれば良いか改めて回答をおねがします。

<表示内容>
aaaaabbbbbccccc(1行で表示されます。a b c の間で改行したいのですが)

<希望表示>
aaaaa
bbbbb
ccccc
のように3行にしたいのです。

補足日時:2002/10/15 00:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!