• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cgi:textareaでの改行を<br>に)

cgi:textareaでの改行を<br>に

このQ&Aのポイント
  • perlでcgiを作成し、<textarea>で投稿されたテキストの改行文字を<br>に変換する方法について教えてください。
  • 現在、改行処理を行っていますが、<textarea>内で連続で改行が行われると望んだ結果が得られません。
  • パターンマッチの知識が不足しており、改行処理を望む形にする方法がわかりません。

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

  • ベストアンサー
  • so_blue
  • ベストアンサー率48% (50/104)
回答No.1

自分は、その3つの処理の後に、下記を実行しています。 $value =~ s/(<BR>|\s)+$//g; # 最後に<BR>かスペースかタブが1つ以上ある時はとっぱらい 自己流なので、もっといい方法があるかもしれません。

2002pon
質問者

お礼

ありがとうございます。とりあえずできたようです。 ところで、 ># 最後に<BR>かスペースかタブが1つ以上ある時はとっぱらい は、もしかして、 $value =~ s/(<BR>|\s|\t)+$//g; ですか? また、最後の、っていうのは、+$の部分がポイントなんでしょうか?

その他の回答 (1)

  • so_blue
  • ベストアンサー率48% (50/104)
回答No.2

>は、もしかして、 >$value =~ s/(<BR>|\s|\t)+$//g; >ですか? \sには「改行・スペース・タブ」が含まれるようなので、 \tはなくてもOKです。 # 知識として知っているのみで、検証した事はないのですが.... >また、最後の、っていうのは、+$の部分がポイントなんでしょうか? 若干惜しいのですが、「(<BR>|\s)+$」を分解すると、 (<BR>|\s) → <BR> or \s (改行・スペース・タブ) + → 直前のものが1回以上(あればあるだけマッチ) $ → 行末(正確には最後の文字の後ろ) となります。 + の「直前」は()でグループ化したものですね。 「s/(<BR>|\s)+$//g;」がもし「s/(<BR>|\s)+//g;」だった場合、 <BR>・改行・スペース・タブのどれかが1回以上続く部分 にマッチすることになり、総てのスペースや改行がトッパラワレてしまうわけです。 ちょっと解説が下手で申し訳ないですが、こんな感じです(汗

2002pon
質問者

お礼

ありがとうございました。理解しました(^^