高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

無謀な話?

 掲示板をXHTML1.1で書こう…というのは、一見かなり無謀かもしれません。何しろユーザーは何書いてくるか分からないんですから。
タグは当然使用禁止にするとしても、わたしだってよくする、空行を何個か作られたりしたらたちまちエラーが出てしまいます(文法上はエラーにならないかもしれませんが…)。

 いちおう、改行をbrに置き換えるという方法から離れて、空行以外の行をすべて段落としてみます。

  s/^(.+)$/<p>\1<\/p>/gm;

 しかしこれではどんな行でも同じ間隔のマージンが出来てしまいます。意味段落と形式段落の違いを表現できません。
なので、はてなと同じように(?)完全な空行にbrをはさんでみると…。

  s/^$/<br \/>/gm;
  s/^(.+)$/<p>\1<\/p>/gm;

 これでも二つ以上空行をあけられると対処できません。

 文法に厳格な、ばけらさんのところの掲示板を見てみると…。
おお、二つ以上続く改行は、意味段落の区切りと見なされ、すべての意味段落がdivで囲まれています。すごい・・・。


 これらを現実的なスピードで処理するにはどうすればいいんでしょう?わたしにはせいぜい、文章を改行で区切ってリストに入れ、一行ずつ処理する方法しか思いつかないんですが…。
大体はてなのリスト構文もそうです。どのタイミングでulタグを入れて実装してるのかさっぱり。正規表現は奥が深いなぁ…*1


 …思ったのは、ValidなXHTMLを書くことはさほど難しくないですが、ValidなXHTML出力するCGIを書くのは難しいということです。うーん…。

*1:そういえば今使っている掲示板CGIで、複雑にネストしている(?)正規表現の構文を見ましたが…。あそこまではまだわたしには出来ませんねえ…