2ちゃんねるでURLを含むレスを抽出

2chを見ていて、雑談が多い場所だと新しい情報が貼られたときに見逃してしまうことが多い
なのでURLが入っているレスだけ抽出できればいいなぁと
そんなツールをPHPで作ってみました

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>2ちゃんねるURL抽出</title></head>
<body>
<form action="index.php" method="post">
 スレッドURL: <input type="text" size="80" name="URL"/>
 <input type="submit" name="submit" value="GO!"/>
</form><hr>

<?php
//URLが入力されたら表示開始
if($_POST['submit']){
	$URL=$_POST['URL'];
	
	
	//URLをパースする
	$URL_arr=parse_url($URL);
	//板名取得のためにパースする
	$board=split("/",$URL_arr['path']);

	//read.cgiの場所から板名を取得
	$i=0;
	foreach($board as $read){
		//echo $read."<br>";
		if($read==="read.cgi"){
			$board_pos=$i;
		}
		$i++;
	}
	//2ch以外のBBSに対応するため
	if($board_pos!=2){
		for($j=1;$j<($board_pos-1);$j++){
			$URL_arr['host'].="/".$board[$j];
		}
	}
	//$board_posが板名の場所
	$board_pos++;
	//.datファイルの位置を捜す
	$dat_URL="http://".$URL_arr['host']."/".$board[$board_pos]."/dat/".$board[$board_pos+1].".dat";
	
	//ファイルオープン
	$fp = fopen($dat_URL, "r");
	//エラー処理
	if($fp===FALSE){
			echo $URL."<br>";
			echo $dat_URL."<br>";
		echo "そんなスレありません・・・<br>";
	}
	
	//レス番カウンタ
	$res_count=0;
	//datファイル解析
	while ($line = fgets($fp)) {
		$res_count++;
		//datファイルを"<>"でパースする
		$output=split("<>",$line);
		
		//>>1のときだけスレッド名取得
		if($res_count===1){
			echo "<b>".$output[4]."</b><br>";
			echo "<a href=\"".$URL."\" target=\"_blank\">".$URL."</a><br><hr>";
		}
		//「://」で引っかかるレスを抽出
		if(preg_match("/:\/\//",$output[3])){
			//レス番指定を修正
			$output[3]=str_replace("../test","http://".$URL_arr['host']."/test",$output[3]);
	    	         //URLを抽出してリンクを張る
			$word=ext_url($output[3]);
			//表示
			echo "<b>".$res_count."</b> <font size=\"2\" color=\"forestgreen\"><b>".$output[0]."</b></font>";
			echo " <font size=\"2\" color=\"808080\">".$output[2]."</font><br>".$word."<br><hr>";
      	          }
	} //while END
	fclose($fp);
	
}

//参考http://www.tokujyuu-japan.com/phpBlaz/lesson/regex/php_regex_operation.html
function ext_url($str){
	// ttp://やtp://をhttp://に直す
	$str=preg_replace("/h?t?tp:\/\//i"," http://",$str);
	$pattern='/ (https?(:\/\/[-_.!~*\'()a-z0-9;\/?:\@&=+\$,%#]+)) /i';
	$replacement='<a href="\1" target="_blank">\1</a>';
	// http://にリンクを張る
	$output=preg_replace($pattern,$replacement,$str);
	return $output;
}

?>

<p>Copyright 2010 <a href="http://d.hatena.ne.jp/t-kado/" target="_blank">t-kado</a> All rights reserved.</p>
</body>
</html>

スレのURLを入れれば、URLを含むレスを抽出してくれます。
2ch以外にもlivebays.net,パー速、モータースポーツ実況板、ニコニコ動画質問&交流掲示板等の
外部の2ch掲示板に対応しています。

最近はActionScript,PHP,JavaScript,VBAC言語に全然触ってないなぁ
Androidのネイティブコードには興味があるので、少しずつ触っていこう