どうどん!
どうどん
更新日:2020/08/20

PHPでふたばの現行スレッドを取得して、常に現行スレが開くリンクを作る方法

ふたばはスレがすぐ削除されるため、毎回現行スレッドを探さないといけません。
その手間を無くそうと、現行スレが絶対に開くリンクを開発()しました。

完全に自分用ですが、せっかくなので共有。

※東方裏の場合です。板によって違うので応用ください。

PHPソース

このPHPファイルをWEBサーバーに置きます。
そして、これをURLから開くとリダイレクトし、現行スレへ飛ぶ仕組み。


<?php

//カタログページのスレッドの本文取得にCoocieが必要(本文表示設定ON)
$opts = array(
'http'=>array(
'method' => 'GET',
'header' => "Cookie: cxyl=20x20x20x0x0"
)
);
$context = stream_context_create($opts);

//カタログページのソースを抽出
$data = file_get_contents('https://dec.2chan.net/55/futaba.php?mode=cat', false, $context);

//ふたばはShift_JISなので、utf-8に変換
$data = mb_convert_encoding($data,"utf-8","sjis");

//正規表現での抽出パターン。この文字列がある行を抽出。
$pattern = '/<td>.*東方キャノンボールスレ.*?<\/td>/';

//パターンマッチ
if(preg_match_all($pattern, $data, $result)){

//置換でURLを抽出
$subject = array('','htm'); 
$pattern = array('#<td><a href=\'#','#htm\'.+?$#'); 
$url = preg_replace($pattern, $subject, $result[0][0]);

//抽出されるURLは相対パスなので、絶対パスに変換
$url = "https://dec.2chan.net/55/".$url;

}else{
//スレが無い場合はカタログトップのURLに
$url = "https://dec.2chan.net/55/futaba.php?mode=cat";
}

//リダイレクト
header('Location: ' . $url, true, 301);
exit;

?>

適当ですが動けばヨシ。10分クオリティ。

問題点はテンプレ頼りというところ

テンプレ頭の本文で識別していますので、
統一されていない場合は抽出が難しくなります。
東方キャノンボールのスレは毎回同じなので簡単。

ということで、出来上がったのがこちらのURLになります。

https://doudonn.com/hutabacb/

記事ランダム
どうどん!