【HTML】StrictなHTMLのBBSを作ろう【Perl,PHP】
strictなHTMLを出力するBBSを作成するスレッドです。
strictの種類としては、html4.01.XHTML問いません。
書き込みに対し、どのような処理を与え、どんな結果を出すことが望ましいか、
そのコードはどんな風にすればよいか、を話し合うスレです。
参照スレッド
Strict-HTML スレッド25@Web制作
http://pc5.2ch.net/test/read.cgi/hp/1101043958/l50 >>211
改行の回数を「間隔をあけたい距離」と解釈するわけか。
まあ、「間隔をあけたい距離」を「間」とするのもいいかもな。
行間で間、を嫌悪する人もいるし、
「改行はいくついれても2個以上だと段落終了と次の段落の開始と見做す」
とを設置者がオプションで選択できてもいいかな。 code はインライン要素ですからっ
>>199 のように blockquote 内 blockquote はまだわかりやすいとしても、
リスト内リストとかはどーすんの? 考えない? >>213
リストのネストって語呂がいいな。
リストのネストって、引用の引用みたいな単純なものじゃないし、
また、そこまで深い階層の書き込みなんてそうそうあるものかなぁ。
なくても不便ではないような希ガス >>215
ディレクトリ構成とか、いちいちpre要素で囲んで図作るのか?
リストで表すのが普通じゃないの。
で、その場合ネスト必要。
っつーか、リストのネストは単純に簡単だし。 >>214
いや、>>213 が言ってくれてるように、
2階層以上のリストとかは考えないで無視するのか? って言いたかった。
言葉足らずスマソ
それから
----------------------
・・・・はぁ
・・鬱だ
----------------------
と書いたらリストになってしまうわけだが、
この辺どうするかは投稿者が決定したらいいのか、
それとも「・連続 はリストとみなさない」とスクリプト内で判断すべき? 「!・」をリストとみなすとかにすればいいんじゃないかな? 行頭に「・」で連続しなければリスト、でいいと思う。
・2ちゃんねる
・ネット関係
・Web制作板
・WebProg板
こういう書き込みってあるのかなぁ。今まで見たことない。
ul要素は一行目でいいとして、ol要素は考えない? >>216
俺が見てきた中では、図で表してるのが殆ど。
↓例
ディレクトリ構成どうしてる?
http://pc5.2ch.net/test/read.cgi/hp/1030814119/
普通はこう書くわな。
こればかりは、書式を利用者側に覚えてもらっても良いんでない?
図で書くよりも手間が省けるだろうし。 >>211
いいアイデアかもね。
margin-top:xのxの部分を空行の数ごとに変わって行くようにしたりな。 >>216
>>222
ディレクトリ構成を掲示板に書き込む、ってケースはかなり特殊じゃないか?
まあ、特殊だから無視していい、ってわけではないけど。 >>223
インラインのスタイルはXHTML 1.1では推奨されないみたいだが 1.0Strictで作ればいいじゃなーい。
(;;;;;;;´Д`) 議論が盛り上がっているようで何より。とりあえず>>199は実装できた。
リストについてなんだが、今のところ
「連続しない・」で始まる行が2行以上連続する場合にリストと見なすよう実装している。
2行以上ってのは>>36みたいなケースに対処するためだが、
意外と1行のリストも有り得るかも知れないな…どうだろう。
リストのネストについては、正直あまり必要性を感じない。
>>224が言うように、ディレクトリ構成みたいな純粋なネスト構造は希だろう。
ほとんどの場合は複数のリストをフラットに並べれば表現できる気がする。
一応「何でも出来る」ような基礎は作っておくつもりなので、
そういう特殊用途にはその都度改造しておくれ、というのが作る側の本音だ。
>>211,223安易に「見た目」に繋げるのはどうかと思うが…
とりあえず連続する空行の数は数えられるようにしておく。 >>227
お疲れ様です。
>>68のを改造ってことはラウンジ型のまま?それともスレッド式とかレス式なのかな?
> >>211,223安易に「見た目」に繋げるのはどうかと思うが…
確かにそう思う。
でもまぁ利用者に対して選択肢を広げるってのはまぁ悪い事でもないかもね…。 >>227
>>212でも書いたけど、選択式でいいんじゃない? 設置者の任意で。 結構書き込んでますよ…一応。
あっちにも顔出したりしてます。
まぁヘタレは何処までいってもヘタレですが(;´Д`) >>230
ここの1は、立てれなかった俺の代わりに立ててくれた、ってだけだからな。
1を責めるな。 >>240
・リスト。
・リスト。
・リスト。
・・・・テスト。
・リスト。
・・・・テスト。
これを変換したら最初の「・・・・テスト。」の前に「・リスト。」が自動で挿入される模様 >>242
今さらで申し訳ないんだが、空白後に「・」の場合は?
現状どこぞの掲示板に書き込むときはインデント代わりに空白入れたりしちゃってるが、
>240のサンプルだとそれは反映しない設定になってるよね?
・リスト1
・リスト2
2chとかにリストを書き込むときこんな感じで(自分内整形)書くことがあるんだけど。 フォントの関係で、どうしても見た目で調整しようとすると、
空白1つとは限らないしなぁ。
そこ難しいところかも。 行頭のスペースと、連続したスペースを一旦無視すればいいんじゃないかな。
半角スペースなら無視してもいいけど、
全角スペースまで無視しちゃうと、AAが貼れなくなるわけだが。 >>246
pre要素でマーク付けする(「AAを書く」)みたいなチェックボックスを実装すればいいんじゃないか? 「StrictなHTMLを吐かせるために掲示板そのものを作り直す必要はない、作り直してはいけない」
というWebProg側の主張を”実演”したつもりなんだが、ちゃんと伝わっただろうか…。
この反応の薄さは成功したと見て良いのか…あるいは単に人が少ないだけか(笑。
>>243行頭の半角/全角空白はリスト判定時には無視するようにしてみた。
>>246リスト判定から外れれば空白も残るよ。
---------------------
・リスト。
・リスト。
・・・・テスト。
---------------------
<ul><li>リスト。</li><li>リスト。</li></ul><p> ・・・・テスト。</p>
---------------------
AAについては…まあよく考えておくれ。
>>250
しまった、空白が消えてしまった…。
全角で書き直し。
---------------------
・リスト。
・リスト。
・・・・テスト。
---------------------
<ul><li>リスト。</li><li>リスト。</li></ul><p> ・・・・テスト。</p>
---------------------
ラウンジ型の掲示板でそもそもAAなんて使うのか?
という疑問が…。 設置者の意図に関係なく、貼り付ける人間は出てくるだろうね。 >120がんばって〜。
もし実用公開されたらサポート掲示板として使わせてもらうよ。 >120ガンバ。
これでもリスト判定されるみたい。
------------------------
>>・テスト1
>・テスト2
------------------------
<blockquote><blockquote><ul><li>テスト1</li><li>テスト2</li></ul></blockquote></blockquote>
------------------------
<strong>や<em>は利用者にタグを書かせれば良いんでない? >>255
><strong>や<em>は利用者にタグを書かせれば良いんでない?
掲示板でHTMLの話をする場合、<strong> と書かず <strong&gt;
と書かなきゃならなくなるのか? たぶんhtmlspecialchars()って関数で勝手に置換されると思うよ。
'<' => '<', '>' => '>' 2chって&を&(ほんとは半角)amp;に変換しないのか…orz >>254-255応援ありがと。
http://rain.s88.xrea.com/strictbbs/
HTML変換部分のソースを切り出したり、色々変更。
>>255のも修正されたはず。
<em>や<strong>は…どうだろうな。
日本語としても適当な表記があれば良いんだが、
「」とかは用法が広すぎるし…。 >120
「!」が使われてる部分を強調すると言うのはどうだろうか?
------------------------
テスト!
テスト,テスト!
テスト、テスト!
テスト。テスト!
テスト!テスト。
------------------------
<p>
<strong>テスト!</strong><br />
テスト,<strong>テスト!</strong><br />
テスト、<strong>テスト!</strong><br />
テスト。<strong>テスト!</strong><br />
<strong>テスト!</strong>テスト。
</p>
------------------------
でもこれだとAAを書く時問題が出そう…。 >>261
連続スペースは無視、の話題の際に、「AAを書く」ボタンの実装(pre)が出たな 掲示板作製を巨大AAを書くことを前程に考えてるから悩むんじゃないか?
AAは無しでいいじゃん・・・
body {font-family:○○; /*MS Pゴシックなどに*/
} >>262
もしそれを実装するなら>>255も実装出来ると思う。
<select name="" tabindex="">
<optgroup label="通常投稿用">
<option value="1"><strong>,<em>タグ有効</option>
<option value="2"><strong>,<em>タグ無効</option>
</optgroup>
<optgroup label="AA用">
<option value="3"><pre>で書く</option>
<option value="4">段落まで<pre>で書く</option>
</optgroup>
</select> AAなんて特殊な用法のためにボタン実装ってアホくさくないですか。 <pre><code></code></pre> でいいじゃん。 >>266
頻度で決めるのもな。
「うちは誰とも干渉しないから引用機能実装しなくていいよ」って言ってるのと等価。 こういうの面白いとは思うけど、BBSの利用者がリストや強調機能を
利用してくれるとは思えないんだよね。実際に使うのはBBSの管理人
だけになりそうな予感。 >>271
だから、普通の書き込みの状態を、どこまでStrictに出力するかってことが重要なわけで。
それを話し合ってるのだ。 >>271
つか、そういうサイト管理者には無縁なものだしね。 単純にちょっと忙しかった。ま、少し困ってるのも事実だが…。
とりあえず>>270、「選ぶ」ためには予め全部作っておく必要があることを忘れないでくれよ。
…実業務でも往々にしてある構図だな、これ(苦笑。
それとPRE(AA用のブロック?)とかって、結局どんな処理を期待してるの?
要するに改行をそのまま表示する(段落区切りと見なさない)ってこと?
それだけなら、まあそのまま素直に実装するけど…。
あと困ってると言ったのは、<em>とか<strong>とか置換する際の問題。
平たく言えば、書き手を信じて単純に置換すると
<strong><em></strong></em>こうなりかねない、ってこと。
完全に対処するためにはもう一段階解析を細かくしなくちゃいけないんだけど、
流石に面倒になってきた。適当な妥協策を探るか、覚悟を決めて書き直すか…。
>>275
> それとPRE(AA用のブロック?)とかって、結局どんな処理を期待してるの?
> 要するに改行をそのまま表示する(段落区切りと見なさない)ってこと?
じゃなくて、
連続スペースは無視しようぜ→じゃあAAは?→AAはpreで括ろうぜ
ってだけの話で、preにする理由はそんな流れ。 <pre>はあって困るもんじゃないないし
ないよりあったほうがいいと思う。 PREという名称とAA用ブロックを混同するのがマズイ気がするな…。
>>276とりあえずAAを書く上での問題が連続スペース「だけ」なら、
現状でも特に問題はないはず。
デフォルトで空白は保持されるから。
一方で、普通PREという名称でイメージする領域、
つまり連続改行による段落区切りを無効にした領域が
別に必要なんですか?
もしくは強調などのインライン要素置換をも
無効にした領域(それをPREと呼ぶべきかは知らない)がご所望ですか?
と訊いたのが>>275
…ついでに
「重要度に関わらず、とりあえず選択式で」ってのは勘弁してくれ、とも言ってるわけだが(笑
インライン要素置換無効がいいかなーと個人的には思う。 >>281
> デフォルトで空白は保持されるから。
保持しないオプションつけてくれ、はスルーされるわけね。
連続スペースは気持ち悪い。 「インライン要素置換をも無効にした領域」として<pre>を実装してみた。
http://rain.s88.xrea.com/strictbbs/clrea/parse.php
ソースはまだぐちゃぐちゃだが、動くことは動くはず。
<pre>と</pre>に囲まれた領域では、全ての改行が単純に<br />に置き換わる。
インライン要素置換は起こらない。勿論リスト引用等々も機能しない。
あとインライン要素置換のテスト用に<em>を実装しておいた。
作ってから気付いたけど、tag-map.iniで
preformatted=<pre>%CONTENTS%</pre>
となってるのを
preformatted=<pre><code>%CONTENTS%</code></pre>
にすればソースコード用に、
preformatted=<p>%CONTENTS%</p>
にすればAA用になるな、これ。
排他使用でも良いけど、どうせなら複数同時に使えれば平和になりそうな気がする。 >>283
それは設置時のオプションとして、ってことだよね?
確かに、<pre>を実装するとなると空白の扱いくらいは
設置者のポリシーとして設定できた方が良いかも知れないな。
ちなみに「空白を保持しない」ってのは
「連続する半角/全角空白を半角空白1つに置き換える」くらいの意味でOK?
>>284
仕様かも知れないけど一応報告。
------------------------
<pre>
テスト
</pre>
------------------------
<pre><br />テスト<br /></pre>
------------------------
あと、
1 文字
2 文字
3 文字
みたいに連番になると<ol>なんてどうかな……? olじゃなくてulのほうが使う機会かも
* foo
* bar
* baz
みたくするとulでリスト化するとか 結構間が空いてしまったが、
http://rain.s88.xrea.com/strictbbs/clrea/parse.php
PRE系統のタグが複数同時に使用できるようになった。
デフォルトでは<pre>と<AA>が使用可能だが、カスタマイズも可能。
(方法については別途実験用のラウンジにでも詳述しておく)。
あと空白の扱いと<pre>系タグの使用許否も設定できるようになった。
/StrictBBS/config.php
内の定数で設定する。例えば
define('PRESERVE_WS', false);
にすれば、連続する全角/半角空白とタブは半角空白1つに置換される。
またこの設定は実際の変換時にダイナミックに変更することも出来る。
上URLで実演しているので試してみて欲しい。 >>288
それはずばり仕様。
中途半端に改行を削ったりすると意味が無くなってしまうので。
あと<ol>については、<ul>以上に書き方のバリエーションが
ありすぎるので保留にしている。
>>293
> あと<ol>については、<ul>以上に書き方のバリエーションが
見当違いだったらごめん。バリエーションって、ナンバリングのスタート地点とかのこととかかな?
だったら、type属性もstart属性もvalue属性もcompact属性も非推奨だから気にしなくていいと思うよ。
strictBBSなんだし。 >>294
見当違いとかいう以前に、非推奨の意味を誤解していないか?
HTMLで見かけを指定する要素が非推奨という意味は、標準の見かけだけを
考えればいいということではなく、見かけが違っても本質は同じものなら
本質の方だけを考えろという意味だよ。見かけはいくらでもあり得るわけ。
つまり、非推奨だからこそ、よりバリエーションがあり得るんだけど。 >>295
> つまり、非推奨だからこそ、よりバリエーションがあり得るんだけど。
ごめん。意味がわかんない。
非推奨は実装しなくていいんだからそれによって増えうるバリエーションはない、ってのはあってるよね? >>296
そこが違ってるんだって。例えば、
1. ぬるぽ
2. がっ
i. ぬるぽ
ii. がっ
この2つは数の表示方法が違うけど、本質的な論理構造は「ぬるぽ」と
「がっ」がこの順序に並んだリストという意味で全く同じものを表している。
だから本質的でない見栄えの違いをtype属性などで指定したりはせずに、
<ol><li>ぬるぽ</li><li>がっ</li></ol>
と、どちらも本質部分だけを書こうというのがStrict。それをおまいさんは、
上のリストが推奨で下が非推奨と誤解していないか?…と。 とりあえず /^[0-90-9]+[\..]/ だけとか。
先頭に少数付きの数字を書きたいときに競合するか。ふーむ…。 だから順序をつけることにしか意味は無いわけで。リストを示すのがが数字であろうと何番から始まろうとどうでもいいんだよ。 >>299
それを踏まえた上で>>298は
とりあえず算用数字だけ順序リスト化しないか?と述べていると思うのだが。 8種類だけ実装すりゃいいんでねーの?
ttp://www.htmlhelp.com/ja/reference/css/classification/list-style-type.html
半端な書き方をして混乱させてしまったようですまん。
<ol>のバリエーションってのは単純に、
1. 2. と書く人もいれば I. II. と書く人も i. ii. (1) (2) 1、2、等と書く人もいるから難しい、
というだけの話。
これだけ多くのバリエーションがあると、全てに対応するのはまず無理だ。
かといって>>298が言うような限定的な実装をすると、本当に使われるのかどうかが疑問になってくる。
そのあたりうまい妥協点が見出せないから、実装の手間も考えて保留中、ってこと。
>>297
書き込まれ方、って話?
そんなのは「引用の場合は文頭に「>」を」というのと同じで、ルール作っておけばいいでしょ。
「iiにしたい」と思う書き込み人のことを考慮する、ってのはstrictBBS的な発想じゃないし。
数字のタイプはページ管理者の一存でいいでそ。 そうじゃなくて、olにしたいけどどの書き込み方法を実装しようか、って話だろ?
iiだろうが2だろうがolはolであって、どう見栄えをコントロールしようかなんて話にはなっていないが。 >>305
> そうじゃなくて、olにしたいけどどの書き込み方法を実装しようか、って話だろ?
だから、「いずれか一種類にする」でいい、と言ってるわけでしょ。
>あと<ol>については、<ul>以上に書き方のバリエーションが
この言い方ではいろんな書き方をカバーするつもりととれるから。 >かといって>>298が言うような限定的な実装をすると、本当に使われるのかどうかが疑問になってくる。 >>307
仕様に従わない人には使えない機能、で割り切るしかないんじゃないの?
だってこう書けば強調になる、に従わない人の強調の書き方までサポートできないでしょ?
それと同じだと思うんだけど。 >>308
んなことを言い出したら、
「閲覧者が入力した内容を可能な限りStrictにマークアップ」
という最初の命題なんぞ投げ捨ててしまうことになりかねんが。
実際問題不可能なことは不可能で仕方がないとして、
対応策がどうしようもなく広がるものでなければ検討する価値はあると思うんだがなぁ。
強調を ** で挟んだり文字間空けるなんてのじゃ追いきれないもんだが、
文頭に算用数字(アラビア、ギリシャ)か漢数字か全角か半角か、
っていうのは最初っから割り切っちゃうほど難しい実装かねぇ。 >>309
> 「閲覧者が入力した内容を可能な限りStrictにマークアップ」
> という最初の命題なんぞ投げ捨ててしまうことになりかねんが。
そんな主旨があったのか。
俺が提起して、スレ立て(失敗して代わりに立ててもらった)んだが、
そんな意図はまるでなかったよ。
strictな記述が可能な掲示板を作ろう、であって、
書き込んだ人の意図を「エスパー的に汲んで」StrictなHTMLとして吐き出す、というものなんて作れるわけない、と思うわけで。 http://rain.s88.xrea.com/strictbbs/clrea/parse.php
とりあえず(半角/全角数字+区切り文字)だけ実装してみた。
区切り文字として使用可能なのは
1,全角コンマ
2,半角コンマ
3.全角ドット
4.半角ドット
5、全角読点
半角全角・区切り文字は混在可能。上の5つは1つのリストになる。
ただし数字は1から始まり、連続していなければならない。
今回結構変更点が大きいので、色々試して欲しい。
特に<ul>との組み合わせとか。 >>309-310
俺は少なくとも「ほとんど何も考えなくても使える」ものを作っているつもりだったが?
掲示板に書き込む人全てがHTMLに明るいわけじゃない。
そういう人が何も考えずに書いたとしてもある程度妥当なマークアップになる、
という部分こそが”HTMLの簡便記法”に過ぎないWikiとの違いじゃないのか?
で、日本語で個条書きを書こうと思ったら8〜9割の人間は・を使うだろう。
一方順序リストの場合はそうはいかない。
だからどの程度サポートすればOKか議論してくれまいか。
俺としては漢数字ローマ数字あたりはかなり面倒くさいので半角/全角くらいで勘弁して欲しいが、
いやどうしても必要だ、と結論されれば何とか挑戦してみよう、
てのが今の話。