• ベストアンサー

文字列$strをブラウザで表示させる場合

右側にいっぱいになったら水平スクロールバーを発生させずに下に折り返すというものを使いたいのですが print "<div>$str</div>"; だと$strが長い文字列の場合には水平スクロールバーが出てしまいます 折り返すようにするためにはどんなタグを使ったらいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

補足回答。 参考URLですがword-breakよりword-wrapの方が適切だったかも。(IE使ってないのでどっちがどっちだかわからない・・・)

参考URL:
http://www.htmq.com/style/word-wrap.shtml

その他の回答 (2)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

以前の質問とリンクして考えると $str =~ s/\s/&nbsp;/g; が問題だと思います。 ブラウザは半角の英字が連続すると単語が続いているものとして改行が入らないようにする仕様になっています。 通常 スペース(や一般的に区切りと判断できる記号)が適度に混在していれば、スペース部分で折り返すのですが &nbsp; ではスペースの代わりとはならないようです。 \s といっても改行は別で変換しているし本当のスペースかタブぐらいしかフォームには混入してこないと思うので $str =~ s/\s/&nbsp;/g; ↓ $str =~ s/\t/&nbsp;/g; にしてもいいんじゃないでしょうか。 以上が全然まとはずれで、とにかく幅に合わせて自動改行して欲しいというならIE限定になりますが、スタイルシートでそのように指定することも可能です。→参考URL

参考URL:
http://www.htmq.com/style/word-break.shtml
guuman
質問者

お礼

ありがとうございます ie専用仕様というのが残念ですね 参考サイトはブックマークさせていただきました

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.1

Perlでしょうか? まず、HTMLのカテゴリに書くのは、カテゴリ違いだと思いますが・・・ $str~=s/\n/<br>/; とでもして、改行を<br>に変換すればいいのではないでしょうか?とにかく、改行の代わりに<br>を使えば、HTMLでは改行しますが。

guuman
質問者

補足

ありがとうございます ウィンドウサイズが変わっても自動的にウィンドウ幅で改行し水平スクロールが出ないようにするためには<br/>による方法は無理だと思いますが他のタグ等はないでしょうか?

関連するQ&A