▽1
●
shell631 ●100ポイント ベストアンサー |
変数 $tableに目的のHTML文が入るようになっています。
JRAのトップページからアクセスしないと目的のページに行き着かないので、プログラムの実行に少し時間がかかります。
<?php // JRAアクセス専用 function httpJRA($path, $cname) { $host = 'www.jra.go.jp'; $cname = 'cname=' . urlencode($cname); $ln = strlen($cname); $request .= "POST {$path} HTTP/1.1\r\n"; $request .= "Host: www.jra.go.jp\r\n"; $request .= "User-Agent: Mozilla/5.0\r\n"; $request .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"; $request .= "Accept-Language: ja,en-us;q=0.7,en;q=0.3\r\n"; $request .= "Accept-Encoding: gzip, deflate\r\n"; $request .= "Connection: keep-alive\r\n"; $request .= "Referer: http://www.jra.go.jp/\r\n"; $request .= "Cookie: style=null\r\n"; $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Content-Length: {$ln}\r\n"; $request .= "\r\n"; $request .= "{$cname}\r\n"; $fp = fsockopen($host, 80); if (!$fp) return FALSE; fputs($fp, $request); $response = ""; while (1) { $str = fgets($fp); if (feof($fp) && ($str == FALSE)) break; $response .= $str; }; fclose($fp); return $response; } //トップページ解析 function topJRA() { $infp = fopen('http://www.jra.go.jp', 'r'); if ($infp == FALSE) return FALSE; $cname = ''; while (! feof($infp)) { $str = trim(fgets($infp)); $str = mb_convert_encoding($str, 'UTF-8', 'SJIS'); if (preg_match("/doAction\(\'\/JRADB\/accessH\.html\',\'([0-9a-zA-Z\/]+)\'\)\">払戻金/iu", $str, $arr) > 0) { $cname = $arr[1]; } } return $cname; } //払戻金ページ解析 function haraiJRA($cname) { $path = '/JRADB/accessH.html'; $str = httpJRA($path, $cname); $str = mb_convert_encoding($str, 'UTF-8', 'SJIS'); if ($str == FALSE) return FALSE; if (preg_match("/doAction\(\'\/JRADB\/access5\.html\',\'([0-9a-zA-Z\/]+)\'\)/iums", $str, $arr) > 0) { $cname = $arr[1]; } return $cname; } //WIN5ページ解析 function win5JRA($cname) { $path = '/JRADB/access5.html'; $buf = httpJRA($path, $cname); $buf = mb_convert_encoding($buf, 'UTF-8', 'SJIS'); if ($buf == FALSE) return FALSE; $flag = FALSE; $str = strtok($buf, "\n"); while ($str != FALSE) { if ($flag == FALSE) { if (preg_match("/bgcolor\=\"#D9D9B0\">\ <\/th>/iu", $str) > 0) { $flag = TRUE; $res = "<tr>\n" . $str . "\n"; } } else { if (preg_match("/bgcolor=\"#D9D9B0\">出走取消<br>競走除外<\/th>/iu", $str) > 0) { $flag = FALSE; break; } else { $res .= $str . "\n"; } } $str = strtok("\n"); } $ln = strlen($res); return substr($res, 0, $res - 5); } //メインプログラム $cname = topJRA(); if ($cname == FALSE) { echo 'JRAのサイトに接続できません'; exit(1); } $cname = haraiJRA($cname); if ($cname == FALSE) { echo 'JRAのサイトに接続できません'; exit(1); } $table = win5JRA($cname); echo $table; //表の内容 ?>