<?
function get_URL_by_socket ($host,$path) {
//Получает URL $path с хоста $host через сокеты.
$fp = fsockopen($host, 80);
if (!$fp) {
die ("Не могу получить данные с url http://$host/$path");
}
else {
$out = "GET $path HTTP/1.0\r\n";
$out .= "Accept: image/gif, application/xhtml+xml, */*\r\n";
$out .= "Accept-Language: ru\r\n";
$out .= "Host: $host\r\n";
//Имитируем браузер Opera Mini:
$out .= "User-Agent: Opera/8.01 (J2ME/MIDP; ".
"Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n";
$out .= "Cache-Control: no-cache\r\n"; //Не кэшировать
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$headers = "";
while ($str = trim(fgets($fp)))
$headers .= "$str\n";
$body = "";
while (!feof($fp))
$body .= fgets($fp);
fclose($fp);
}
return $body;
}
function process($str,$start,$end,$include) {
//Парсит полученный файл - здесь-то и пишется главное
//У нас это извлечение содержимого от $start до $end
$str1=strpos ($str,$start);
$str2=strpos ($str,$end);
if (!is_integer($str1)) {
return "Не найден начальный сегмент: ".htmlspecialchars($start);
}
if (!is_integer($str2)) {
return "Не найден конечный сегмент: ".htmlspecialchars($end);
}
if ($str1>$str2) {
return "Конечный сегмент предшествует начальному";
}
if ($include) { //Включать начало и конец
return substr ($str,$str1,$str2-$str1+strlen($end));
}
else { //Исключить начало и конец
$str1+=strlen($start);
return substr ($str,$str1,$str2-$str1);
}
}
function parser ($host,$path,$start,$end,$include) {
//Основной вызов парсера:
//$host, $path - хост без http://www. и путь к файлу, начиная с /
//$start, $end - строки начала и конца извлекаемого содержимого
//$include - если true, включать в вывод строки $start и $end
static $first=true;
$str= get_URL_by_socket ($host,$path);
if ($first) { //Заголовок посылается только при 1-м вызове
}
return process($str,$start,$end,$include);
}
$str=parser ("fc-elets.ru","/index.php/tournament/ranking/1-chernozemje",
"<!-- content -->","<!-- matchdays pageNav -->",false);
$str = iconv("UTF-8", "CP1251" , $str);
echo('<table width=500 border=1><th><td>') ;
print $str;
echo ('</td></th></table>')
?>