2chのスレッドをPHPで取得する方法

せっかくなので解説記事を。
知ってる人には自明ですが、覚えると色々と面白いこともできると思いますよ

$url="http://news22.2ch.net/newsplus/" //板のURLを入れて下さい
$HEADLINE = split("\n", http( $url."subject.txt" ) ); //subject.txtを付けると板一覧がテキストで取得出来ます
$url2[$j] = ereg_replace( "2ch.net/","2ch.net/test/read.cgi/",$url );

for($i=0;$i<=COUNT($HEADLINE);$i++)
{
  //スレ毎の処理
    list($dat,$title) = split( ".dat<>",$HEADLINE[$i],2);
    fwrite( $fp, " <a href=\"". $url2[$j].$dat  ."/l50\">".$title."</a><br>\n" );
}


httpという関数でソケット通信を行っています。
スレ一覧は板URL+"subject.txt"というテキストファイルで置いてありますので、
まずそれを取得します。
「\n」(改行)でsplit(分割)して配列として取得します
URLの一部を書き換えます
あとは、$HEADLINE配列に各スレのタイトル、URL等が入っています。
(<>で区切られた形式のテキストで1行)
「.dat<>」を条件にsplitで欲しい情報を取りますと、
この場合、$dat番号。$titleにタイトルが入っています。


上記の処理は、subject.txtの中身を見れば、どのように処理をすればいいかは自明ですが、


肝心の以下に2chの情報を取得するか?ですが、
ユーザーエージェントで判断されています。

ソケット通信で、
$request .= "User-Agent: Monazilla/1.00 (kanata/1.00)\r\n";
のようにユーザーエージェントを指定して下さい
必須は「Monazilla」の部分です。
これは2chブラウザなどの専用ツールであることを意味しています。
その後ろは自分のアプリケーションの名前を付けて下さい。
これで、dat自体も取得できます。