17/08/23 18:57:26.81 ZFc7oTWj0.net
function fetchUrlList($url)
{
static $urlList = array();
if (isset($urlList[$url])) { return $urlList; }
$html = file_get_contents($url);
$urlList[$url] = '';
if (preg_match_all('/=\s*[\'\"]\s*(https?\:\/\/' . parse_url($url, PHP_URL_HOST) . '[\w\-\.\!~\*\'\(\);\/\?\:@&\=\+\$,%]+\.html?)\s*[\'\"]/i', $html, $matchs)) {
foreach ($matchs[1] as $match) {
if (!isset($urlList[$match])) {
fetchUrlList($match);
}
}
}
return $urlList;
}
5分程で超適当に書いてほとんど検証してない糞ソースでも良ければ
再帰は12行目のところね
2chの仕様上仕方なくインデントを全角空白にしてるから注意(他へソースを載せるのすら面倒w)
一度取得したURLを再取得しない程度で負荷には全く配慮してないので自己責任で
処理の流れさえ分かれば良いと思ったから、正規表現(超適当だからこれも直してw)の部分見れば分かる通り
相対パスは無視して末尾.htmか.htmlしか取ってない
相対パスまで処理する時は正規表現書き換えて相対パスをURLに変換する処理を自分で書いて
ソースより↑の説明書く方が時間かかったかもw