2007年07月19日(木) [長年日記]
[English!]
[한국어]
[今日は何の日]
§1 文字列置換
スクリプトの改造中に、問題が発生。本文中にユーザーが書き込む改行(<br>)の扱いについてである。案外連続した改行をして段落を開けたいと思う人は意外と多い。元のスクリプトは連続した改行も許してしまうので非常に見にくいことになる。保存時の改行は放って置いて、表示するときに処理してやればいいと言うことにする。記事の表示ルーチンの手前で連続した改行をパラグラフに変えるようにした。
そもそも全体がパラグラフになっているので
$value =~s/<br>(<br>)+/<\/p><p>/g;
とすることで別のパラグラフに分けることにした。これは大成功だったのですが、この置換式を文末の連続改行に適用されてしまうと文末に空のパラグラフが出来てしまいます。したがってこの置換式の前に
$value =~s/((<br>)+)$//g;
として先に文末の連続改行を削除してしまうことにしました。何とか上手く動いているのですが、正規表現には全く自信がないのでこれでちゃんと合ってるのかどうかすごく不安です。試運転中に問題が出なければ良いという方向で行くことにしましょう。
文末に全角空白を置いて逃げてたのですが、それ、私も試して見ます。
$value =~ s/<p>(<\/p>)+//g; これじゃやりすぎかなぁ(^^;
文末の連続改行は全く意味がないですね。いろいろ改行しながら編集などしている内に改行が貯まっているのに気がつかないこともあるようですから。