2chのDATファイルを、PHPでMySQLに保存する方法を検討

Link

2chのDATファイル仕様が、以下のページにまとめられていた。

monazilla/datの仕様
http://info.2ch.net/wiki/index.php?monazilla%2Fdat%A4%CE%BB%C5%CD%CD

形式

名前<>E-mail<>日付とIDとBE<>本文<>スレッドタイトル
名前<>E-mail<>日付とIDとBE<>本文<>
名 </b>fusianasan.2ch.net<b>前<>E-mail<>日付とIDとBE<>本文<>
名前 </b>◆ozOtJW9BFA <b><>E-mail<>日付とIDとBE<>本文<>
キャップ ★<>E-mail<>日付とIDとBE<>本文<>
名前 </b>◆ozOtJW9BFA <b>@キャップ ★<>E-mail<>日付とIDとBE<>本文<>
あぼーん<>あぼーん<>あぼーん<>あぼーん<>あぼーん
...
  • スレッドタイトルは、1レス目にしか書かれない。
  • ただし、削除跡(レス削除、スレ停止、スレ移動)等では、スレッドタイトル部分にも削除表示がある。
  • 1レスは1行に相当する
  • 1行のデータの区切り文字は「<>」
  • 日付とID(またはBE)は一緒に入れられているので、さらに分割が必要

基本的には、1行ずつ読み込んで、「<>」で分割して保存すればOK
日付とID(BE)は、以下のように「半角スペース」で区切られている。

2009/12/27(日) 21:11:40 ID:GwPHbQvp

[response]テーブル

カラム名データ型内容
idintauto_increment
datintDATファイル名
res_numintレス番号
namevarchar(255)名前
emailvarchar(255)E-mail
datevarchar(255)日付、ID、BEのデータ
messagetext本文

規則

  • 文字コードはShift_JIS
  • 改行コードは\n
  • 投稿者が記入したものはHTMLエンコードされる

名前

  • 2chのログ表示プログラム「read.cgi」では、名前を太字で表示するためにBタグを付加しているが、DATファイル上には単純な名前のみが記録されている。
  • fusianasan等のホスト表示では、手入力の文字列と区別するために、太字ではなく通常表示となっており、ホストの前に</b>で太字を終わらせ、ホストの後に<b>で再び太字にしてあり、このタグはdatに記録されている。
  • ◆という文字があれば、それ以降の10文字(古い投稿では8文字)はトリップとなる。
    トリップも通常表示とするために、同様に</b>と<b>で挟まれている。
  • 普通に文字として◆を書くと、◇に置換されている。同様に、★と●も特殊な条件の人しか使えず、☆と○に置換されている。

E-mail

  • AタグのHREF属性の値として使われる事が多い。
    スペースやシングルクォートはHTMLエンコードされずに、そのまま書き込めることに注意。

DBに保存する場合は、エスケープする必要あり?

日付とID等

  • IDが付く板の場合、日付のあとにID:xxxxxxxxのようにIDが付く。
  • 2004/12あたりから、BE@2ch掲示板のプロファイルが追加された。
    =IDの後に空白で連結されて、BE:xxxxxxのようになっている。
  • 分割するには、" ID:"(先頭に空白が1つ付いている)という文字列を探して、見つかったなら、それより前が日付、後がIDとすればOK。見つからなければIDは無し。BEも同様。
  • 日付データのフォーマット
    日付データのフォーマットは変更が重ねられている。
    古いものから順にあげると、以下のようになっているらしい。
    YYYY/MM/DD(W) hh:mm
    YY/MM/DD hh:mm
    YY/MM/DD hh:mm:ss
    
    Y: 年
    M: 月
    D: 日
    W: 曜日 (漢字で1文字)
    h: 時間 (24時間)
    m: 分
    s: 秒
    現在では、日付の書式も掲示板設定で変えられるようになっており、既定通りの記録がなされているとは限らないらしい。
    その他、今後も様々なオマケデータがここに付加される可能性があるので、データの解釈に柔軟性を持たせるのが良いとのこと。

本文

  • 改行は<br>になっている。
  • 本文データの前後に「半角スペース」が付いている。
    " 1行目 "
    " 2行目 "
    " 3行目 "
    ...
  • 特殊な事例(おそらくバグ)もあり、本文データの1行目先頭と最終行末尾にだけ「半角スペース」が付いている場合もあるらしい。

    具体的には/unix/1000022300/143で、以下のような形をしています。

    " 1行目"
    "2行目"
    ...
    "最後の行 "

    見れば分かりますが、最初と最後にしか、空白がついていません。

HTML表示する際には、半角スペースがあっても特に影響ないので、そのままでOK?

更新日:2010-01-04 (月) 00:00:00 (2875d)
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS