したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

htmltodatサポートスレッド

1065名無しさん:2022/04/23(土) 23:54:47
>>1064さん
お書きになった正規表現をそのまま試してみると

unmatched close parenthesis

というエラーメッセージが出ます。これは正規表現の文法エラーで
「括弧の対応が正しく取れてないよ」と言われてます。

<span\ class="date">) ←この部分の括弧が余分みたいです。

この括弧を消したところ、一応変換はできましたが、名前欄・メール欄・
投稿日欄とかおかしいです。これは、この正規表現では各欄の位置を
正しく認識できてないという事になります。

htmltodatのreadme.txtには、

$1:レス番号
$2:メール欄
$3:名前・トリップ
$4:投稿日・ID
$5:レス内容

となるように正規表現を設定する、とあります。この$1,$2,…というのは
正規表現中に現れる括弧で囲まれたグループ( ([0-9]+) とか (.*?) とかですね)
に順に番号が振られるものになります。
(この辺はreadmeでは説明不足ですね、申し訳ない。あと、なぜそれに合わせないと
いけないのかは私が勝手に決めた仕様だからとしか言いようがないです。まあ当時の
2chのread.cgiの形式になるべく近づけた形なのですが)

で、お書きになった正規表現をみると

$1:レス番号
$2:名前欄
$3:投稿日
$4:ID
$5:レス内容

となってるのをお分かりいただけるでしょうか。
なので、改善すべき点は2つあって
・メール欄に当たるグループを作る
・投稿日とIDのグループを一つにまとめる
という事になるかと思います。
一つ目は割と簡単で、名前欄よりも前に適当に () を入れればいいです。
(グループは順番さえ合っていれば中身は空でも構わない)
二つ目ですが、この https://ikioi5ch.net のhtmlがちゃんとID欄を拾って
くれていれば他に考えようがあったのですが(前処理または後処理で投稿日欄と
ID欄を強引にくっつける等)、意味のないID欄は無視するのがスッキリしていい
のではないかと思います。

<span\ class="uid">(.*?)</span>.*?

の部分をまるっと削除します。
で、その辺を修正した結果は以下です。

m#<span\ class="number">([0-9]+).+?()<span\ class="name"><b>(.*?)</b></span>.*?<span\ class="date">(.*?)</span>.*?<span\ class="escaped">(.*?)</span>#mik


まだ考慮事項があるのですが長くなってきたので次で。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板