改行を反映させるには??

[上に] [前に] [次に]
新庄強死 1999/06/04(金) 17:16:49
翔泳社のCGIプログラミング入門を読んでて疑問に思ったことがあるので教えてください。
普通、掲示板っていうのは、テキストエリアに書かれた内容は
そのとおりに反映されて表示されますが、
この本に載ってるスクリプトを試してみると、
改行したつもりの部分は半角のスペースが入っているだけのようです。
簡易掲示板のスクリプト眺めていてもどの部分が改行処理なのか
わりません・・。

自分は最終的には、改行してあるときにはそれを無視して、半角スペースも消しちゃう、
そして一行が15文字になると強制改行、っていうふうにしたいなと思っています。
これについてももしよかったらヒントください。
「一行が15文字になると」っていう部分をどう処理して良いかわからないので。
お願いします。

ふじ 1999/06/04(金) 18:17:09
>簡易掲示板のスクリプト眺めていてもどの部分が改行処理なのか
>わりません・・。
多分それは、改行処理をしていないんでしょう。出力された
htmlのソースを見ると、改行されて書かれていると思います。

で、htmlでは改行は半角空白と同じに出力されるので、半角空白が入っているように見える。
改行を消すには、
s/\n//g;
で済みますが、一行が15文字ってのは少々厄介かも。
2バイト文字の真ん中で切り落とさないようにしないといけないので・・・

とりあえず、文字列の文字コードがEUCで $str に入っているとして、

$twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]';
$threeBytes = '\x8F[\xA1-\xFE]{2}';

@_ = ($str =~ /($twoBytes|$threeBytes|.)/osg);

これで @_ に、一文字ごとに入るので、あとはそれを適当に・・・
#出力はEUCです。

新庄強死 1999/06/04(金) 18:38:46
[[解決]]
お返事ありがとうございます。
15文字で区切るのは高度な技術のようなので、今後の課題として、
とりあえず改行を反映するようにしようかと思って
s/\n/<br>/g;
とするとうまくいきました!

Aurai 1999/06/05(土) 00:21:46
Shift-JISを使用するなら
s/([\x20-\xFF]{15}[\x80-\xFF]?)/$1<BR>/g
ってな感じですか
でも、なんかぶら下がってて美しくないですね

[上に] [前に] [次に]