usergeyv
Знаток
- Регистрация
- 5 Июл 2013
- Сообщения
- 152
- Реакции
- 25
- Автор темы
- #1
Код в кодировке utf8 парсер торентов:
а, результат :
Как исправить?
PHP:
<?php
@ob_start();
@ob_implicit_flush(0);
@error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
@ini_set('display_errors', false);
@ini_set('html_errors', false);
@ini_set('error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE);
define('DATALIFEENGINE', true);
define('ROOT_DIR', dirname(__FILE__).'/../..');
define('ENGINE_DIR', ROOT_DIR . '/engine');
@include (ENGINE_DIR.'/data/config.php');
function UTF8toCP1251($str)
{
static $table = array("\xD0\x81" => "\xA8", // Ё
"\xD1\x91" => "\xB8", // ё
// украинские символы
"\xD0\x8E" => "\xA1", // Ў (У)
"\xD1\x9E" => "\xA2", // ў (у)
"\xD0\x84" => "\xAA", // Є (Э)
"\xD0\x87" => "\xAF", // Ї (I..)
"\xD0\x86" => "\xB2", // I (I)
"\xD1\x96" => "\xB3", // i (i)
"\xD1\x94" => "\xBA", // є (э)
"\xD1\x97" => "\xBF", // ї (i..)
// чувашские символы
"\xD3\x90" => "\x8C", // Ӑ (А)
"\xD3\x96" => "\x8D", // Ӗ (Е)
"\xD2\xAA" => "\x8E", // Ҫ (С)
"\xD3\xB2" => "\x8F", // Ӳ (У)
"\xD3\x91" => "\x9C", // ӑ (а)
"\xD3\x97" => "\x9D", // ӗ (е)
"\xD2\xAB" => "\x9E", // ҫ (с)
"\xD3\xB3" => "\x9F", // ӳ (у)
);
return preg_replace('#([\xD0-\xD1])([\x80-\xBF])#se', 'isset($table["$0"]) ? $table["$0"] :
chr(ord("$2")+("$1" == "\xD0" ? 0x30 : 0x70))
', $str);
}
function search_torrent($query) {
$ch = curl_init(); // инициализируем сеанс
$title = trim(strip_tags($_REQUEST['title'])); // получаем пост
curl_setopt($ch, CURLOPT_URL, 'http://rutor.co/search/' . $title); //указываем адрес страницы
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera 10.00'); //представляемся серверу браузером Opera версии 10.00
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //ответ сервера сохранять в переменную, а не на экран
$res = curl_exec($ch); //выполняем запрос, результат в переменную $res
if(!$res) {
//для обработки ошибок curl
$error = curl_error($curl).'('.curl_errno($curl).')';
} else {
$result = $res;
$result = UTF8toCP1251($result);
}
$find2 = "";
$p1 = strpos($result, "<table width=\"100%\"><tr class=\"backgr\">");
$p2 = strpos($result, "</table><b>Страницы");
$result = substr($result, $p1, $p2 - $p1);
/* if title has a year
* @param (string) $tpost
* @return (string) year
*/
function ifYear( $tpost ) {
if ( preg_match( "/([1-2][0-9]{3})/", $tpost, $yy ) ) {
return $yy[1];
} else {
return FALSE;
}
}
preg_match_all('#<a href="magnet(.*?)"><img src="http://s.rutor.co/i/m.png" alt="M" /></a>.*?<a href="/torrent/(.[0-9]*)/.*?">(.*?)</a></td>.*?\n.*?<td align="right">(.*?)</td><td align="center"><span class="green"><img src="http://s.rutor.co/t/arrowup.gif" alt="S" /> (.*?)</span> <img src="http://s.rutor.co/t/arrowdown.gif" alt="L" /><span class="red"> (.*?)</span></td></tr>#is', $result, $find);
$count = intval(count($find['1']));
$i = -1;
$find2 = "";
$unsh = 0;
$year = ifYear( $title );
if ($year!==FALSE) {
foreach ($find['4'] as $tor) {
if ($unsh==5) break;
if ( preg_match( "/$year/", $tor ) ) {
$key = array_search( $tor, $find['4'] );
$find['0'][] =array_unshift($find['0'], $find['0'][$key]);
$find['1'][] =array_unshift($find['1'], $find['1'][$key]);
$find['2'][] =array_unshift($find['2'], $find['2'][$key]);
$find['3'][] =array_unshift($find['3'], $find['3'][$key]);
$find['4'][] =array_unshift($find['4'], $find['4'][$key]);
$find['5'][] =array_unshift($find['5'], $find['5'][$key]);
$find['6'][] =array_unshift($find['6'], $find['6'][$key]);
$find['7'][] =array_unshift($find['7'], $find['7'][$key]);
$find['8'][] =array_unshift($find['8'], $find['8'][$key]);
$find['9'][] =array_unshift($find['9'], $find['9'][$key]);
$unsh++;
}
}
}
while ($i < $count - 1) {
if($is==5) break;
$i++;
$find['1'][$i] = str_replace("http://s.rutor.co/i/m.png", "/magnet.png", $find['1'][$i]);
$find['1'][$i] = str_replace("magnet:", "magnet:", $find['1'][$i]);
$is = $i + 1;
$find2 .= <<<HTML
<tr>
<th>{$find['3'][$i]}</th>
<th>{$find['4'][$i]}</th>
<th>{$find['5'][$i]}</th>
<th>{$find['6'][$i]}</th>
<th><a href="http://rutor.co/download/{$find['2'][$i]}"><img title="Скачать без регистрации торрент" src="/download.png" alt="Скачать без регистрации торрент"></a> <a href="magnet{$find['1'][$i]}"><img src="/images/magnet.png" alt="M" title="Примагнитится"/></a></th>
</tr>
HTML;
}
if (!$find2 or $find2 == "") {
$finds = "<br><br><p style=\"text-align: center;\"><span style=\"font-size: medium;\"><strong><span style=\"color: #ff0000;\">Внимание:</span></strong> Не удалось отобразить раздачу! Обновите страницу!</span></p><br><br>";
} else {
$finds = <<<HTML
<table style="width:100%;" class="restable">
<thead>
<tr>
<th style="width:500px;">Название торрент раздачи<span> </span></th>
<th style="width:40px;">Размер <span> </span></th>
<th style="width:50px;">Сиды <span> </span></th>
<th style="width:50px;">Пиры <span> </span></th>
<th style="width:50px;">Скачать <span> </span></th>
</tr>
</thead>
<tbody>
{$find2}
</tbody>
</table>
HTML;
}
return ($finds);
}
@header("Content-type: text/html; charset=" . $config['charset']);
echo search_torrent($title);
?>
а, результат :
Как исправить?