- ベストアンサー
どんなタグを使えば?
掲示板に書込まれて送られてきた文章が折りかえされないで、ずーと長くなって表示されてしまいます。(横方向のスクロールが出る状態)テーブルの中に入れ込むようにはしてないのですが、ディスプレイの巾位に自動で折り返すようなことは出来るでしょうか?どんなタグを書けば良いのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
もし、掲示板書き込みの中で、タグで<br>を入れなくても、改行キーが押されたものを自動改行で表示したいというなら、下の記述を参考にPerl記述をしてみてはいかがでしょうか? それより、ブラウザ幅での折り返しの問題なら、元のcgiで書き込み部分を表示するのが、テーブルになっていたため、<PRE> と </PRE> という文字列があるのかもしれません。よく見て、それを削除すればよいでしょう。 あと、普通、掲示板は折り返し表示しますから、別のそうしたタイプの掲示板用cgiを見て、研究されては、どうでしょう? ________________________ 表示HTMLの横サイズを規定しない限り、改行キーなしで書き込まれたものは、 普通は、TGBn2&¥] コメント部分の自動改行 フォームからデータが送信される際に、データは%16進法という方法で送られてきます。 その時に、フォームからは改行の印(\r\n,\r,\n)もコードとして送られてきています。 その印を<br>タグに変換し、HTML表示の際に改行させるのが、コメント部分の自動改行です。 この変換にはs ~/変換前の文字列/変換後の文字列/g;という式を使います。 この式を利用すると、 $com =~ s/\r\n/<br>/g; $com =~ s/\r|\n/<br>/g; $comに入っている文字列のうち、\r\n、\r、\nという文字列が見つかった場合には<br>という文字列に変換しなさい、という処理をすることができます。(改行コードの種類が違うのは、WIN用、Mac用、UNIX用の改行コードが異なるため) また、最後についているgは、グローバルの意味で、これがない場合は、最初に置換する文字を見つけたら、その後は処理を続行しません。改行のすべてを変換するためには、最後にgをつけて、すべての改行コードを変換する必要があります。
その他の回答 (5)
- Teenage
- ベストアンサー率24% (67/278)
問題となってる長文の記事の部分だけでいいのでソースをここに書き込んでみたらどうでしょうか 内容など見せたくない部分は←ここに~~→というように書き換えてもいいので
お礼
有難う御座いました。原因がわかりました。アルファベット(半角使用)を連続で打ち込むと自動改行しないみたいです。日本語は変換時Enterを押すからなのかしれませんが、チャンと自動改行されます。よく分かりませんが、とにかく感謝感謝です。
補足
有難うございます。オリジナルを試したところ、オリジナルも改行されず(改行を入れず書込んだ場合)。そういう作りなのかなー?ちなみにオリジナルのデコード部分です。 sub decode { local($buf, @in, $key, $val); if ($ENV{'REQUEST_METHOD'} eq "POST") { &error("投稿量が大きすぎます") if ($ENV{'CONTENT_LENGTH'} > 51200); read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } @in = split(/&/, $buf); foreach (@in) { ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コード変換 &jcode'convert(*value,'sjis'); # タグ処理 $val =~ s/\0//g; if (!$whatsnew && !$tagkey) { $val =~ s/</</g; $val =~ s/>/>/g; } else { $val =~ s/<!--(.|\n)*-->//g; $val =~ s/<>/<>/g; } # 改行処理 if ($key eq "comment") { $val =~ s/\r\n/<br>/g; $val =~ s/\r/<br>/g; $val =~ s/\n/<br>/g; } else { $val =~ s/\r//g; $val =~ s/\n//g; } $in{$key} = $val; } $in{'url'} =~ s/^http\:\/\///; $mode = $in{'mode'}; if ($in{'sub'} eq "") { $in{'sub'} = "無題"; } } 長くてスミマセン。m(__)m
- Spur
- ベストアンサー率25% (453/1783)
普通は、テーブルにすれば、そのようにはなりません。 自動的に折り返します。 補足で、自分でテーブルを外したと言われていますが、それが原因だと思います。 その時にどのように記述したかを書かなければ正解は得られません。 きっと、わざわざ折り返さないような処置をしているのだと思いますよ。 オリジナルのままでは問題が無かったはずです。 自分で改造したリスクだと思います。
お礼
有難う御座いました。原因がわかりました。アルファベット(半角使用)を連続で打ち込むと自動改行しないみたいです。日本語は変換時Enterを押すからなのかしれませんが、チャンと自動改行されます。よく分かりませんが、とにかく感謝感謝です。
#2の方の指摘に加え、 <PRE>~</PRE>が入っていませんか?
お礼
有難う御座いました。原因がわかりました。アルファベット(半角使用)を連続で打ち込むと自動改行しないみたいです。日本語は変換時Enterを押すからなのかしれませんが、チャンと自動改行されます。よく分かりませんが、とにかく感謝感謝です。
補足
KENTさんのSUN BOARDと言うbbs( http://www.kent-web.com/bbs/index.html )でフォーム部分はオリジナルはテーブルを使用しているのですが、私はテーブルを外して書換え、ローカルで試しています。コメントを長く書込むと、ブラウザに結果が表示されると改行されないで横のスクロールが出るのです。ローカルでやることは関係ないですよね?ちなみにIE5でアパッチでローカルテストしています。
- ebis
- ベストアンサー率27% (17/61)
通常のテキストであればブラウザが自動的に枠に合わせて改行します。 逆に、改行をさせないようにするタグ <NOBR>~</BOBR>や スタイルシートで <div style="white-space:nowrap">~</div>と 入っていないでしょうか。
お礼
有難う御座いました。原因がわかりました。アルファベット(半角使用)を連続で打ち込むと自動改行しないみたいです。日本語は変換時Enterを押すからなのかしれませんが、チャンと自動改行されます。よく分かりませんが、とにかく感謝感謝です。
補足
KENTさんのSUN BOARDと言うbbs( http://www.kent-web.com/bbs/index.html )でフォーム部分はオリジナルはテーブルを使用しているのですが、私はテーブルを外して書換え、ローカルで試しています。コメントを長く書込むと、ブラウザに結果が表示されると改行されないで横のスクロールが出るのです。ローカルでやることは関係ないですよね?ちなみにIE5でアパッチでローカルテストしています。スタイルシートは入っていません
- Teenage
- ベストアンサー率24% (67/278)
<BR> <P> これ使えば改行は出来ますが・・・ その掲示板は書き込むときに改行を上のようなタグに変換変換しないのでしょうか?
お礼
有難う御座いました。原因がわかりました。アルファベット(半角使用)を連続で打ち込むと自動改行しないみたいです。日本語は変換時Enterを押すからなのかしれませんが、チャンと自動改行されます。よく分かりませんが、とにかく感謝感謝です。
補足
KENTさんのSUN BOARDと言うbbs( http://www.kent-web.com/bbs/index.html )でフォーム部分はオリジナルはテーブルを使用しているのですが、私はテーブルを外して書換え、ローカルで試しています。コメントを長く書込むと、ブラウザに結果が表示されると改行されないで横のスクロールが出るのです。ローカルでやることは関係ないですよね?ちなみにIE5でアパッチでローカルテストしています。
お礼
有難う御座いました。原因がわかりました。アルファベット(半角使用)を連続で打ち込むと自動改行しないみたいです。日本語は変換時Enterを押すからなのかしれませんが、チャンと自動改行されます。よく分かりませんが、とにかく感謝感謝です。
補足
有難うございます。オリジナルを試したところ、オリジナルも改行されず(改行を入れず書込んだ場合)。そういう作りなのかなー?ちなみにオリジナルのデコード部分です。 sub decode { local($buf, @in, $key, $val); if ($ENV{'REQUEST_METHOD'} eq "POST") { &error("投稿量が大きすぎます") if ($ENV{'CONTENT_LENGTH'} > 51200); read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } @in = split(/&/, $buf); foreach (@in) { ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コード変換 &jcode'convert(*value,'sjis'); # タグ処理 $val =~ s/\0//g; if (!$whatsnew && !$tagkey) { $val =~ s/</</g; $val =~ s/>/>/g; } else { $val =~ s/<!--(.|\n)*-->//g; $val =~ s/<>/<>/g; } # 改行処理 if ($key eq "comment") { $val =~ s/\r\n/<br>/g; $val =~ s/\r/<br>/g; $val =~ s/\n/<br>/g; } else { $val =~ s/\r//g; $val =~ s/\n//g; } $in{$key} = $val; } $in{'url'} =~ s/^http\:\/\///; $mode = $in{'mode'}; if ($in{'sub'} eq "") { $in{'sub'} = "無題"; } } 長くてスミマセン。m(__)m