Парсер анекдотов

Статус
В этой теме нельзя размещать новые ответы.

Дмитрий Кесаев

aka Zlobniy Babko
Заблокирован
Регистрация
10 Май 2007
Сообщения
1.332
Реакции
1.235
  • Автор темы
  • Заблокирован
  • #1
Написал от делать нех, парсер анекдотов с Для просмотра ссылки Войди или Зарегистрируйся

Выводит только название категории и анекдоты.

Может кому нить пригодится :D

PHP:
<html>
<head></head>
<body>
<?php
function browser($url) {
$url="http://anekdotme.ru/lenta/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<h1>(.*?)</h1>~is', browser($url), $data);
preg_match_all('~<div class="anekdot_text">(.*?)</div>~is', browser($url), $text);
print implode($data[1]);
echo "&nbsp;на сегодня:<br /><br />";
//print implode('<br /><br />*****<br /><br />', $text[1]); //выводит все анекдоты
print implode('<br /><br />*****<br /><br />', array_slice($text[1], 0, 1)); //выводит первый анекдот, типа анекдот дня)))
?>
</body></html>
 
Если не трудно, скажи пожалуйста, я поставил к себе на сайт твой парсер, он выдает анекдот, но он в неправильной кодировке (вопросительные знаки вместо бкв). У меня сайт в утф-8, вот когда в мозиле перевожу кодировку страницы в винвоус-1251, анекдот показывается нормально. Что в коде нужно дописать чтобы он отображался у меня на сайте в утф-8? Заранее спасибо.
 
  • Автор темы
  • Заблокирован
  • #3
<head>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head> в него прописать; если подинклуживаете файл

или
$implo=iconv( "utf-8","cp1251", $implo); использовать ИМХо наподобии этого
 
я извиняюсь, в пхп не силен, вот так выглядит (ту строчку поставил, но не знаю правильно или нет), пробовал оставлять там только утф-8 или цп1251, ничего не помогает(

PHP:
<?php
function browser($url) {
$url="http://anekdotme.ru/luchshie-anekdoti/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
$implo=iconv( "utf-8","cp1251", $implo);
preg_match_all('~<h1>(.*?)</h1>~is', browser($url), $data);
preg_match_all('~<div class="anekdot_text">(.*?)</div>~is', browser($url), $text);
print implode($data[1]);
echo "&nbsp;на сегодня:<br /><br />";
//print implode('<br /><br />*****<br /><br />', $text[1]); //выводит все анекдоты
print implode('<br /><br />*****<br /><br />', array_slice($text[1], 0, 1)); //выводит первый анекдот, типа анекдот дня)))
?>

Если не сложно напиши полностью код с той строчкой или скажи под какой строкой ее подставить
вот сайт
Для просмотра ссылки Войди или Зарегистрируйся
 
  • Автор темы
  • Заблокирован
  • #5
Для UTF-8...

2 слова на сегодня переведете сами)))

PHP:
<html>
<head></head>
<body>
<?php
function browser($url) {
$url="http://anekdotme.ru/luchshie-anekdoti/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<h1>(.*?)</h1>~is', browser($url), $data);
preg_match_all('~<div class="anekdot_text">(.*?)</div>~is', browser($url), $text);
 
$string = join(',', $data[1]);
$string=iconv( "windows-1251","utf-8", $string);
echo $string;
 
echo "&nbsp;на сегодня:<br /><br />";
//print implode('<br /><br />*****<br /><br />', $text[1]); //выводит все анекдоты
//print implode('<br /><br />*****<br /><br />', array_slice($text[1], 0, 1)); //выводит первый анекдот, типа анекдот дня)))
$string1 = join(',', array_slice($text[1], 0, 1));
$string1=iconv( "windows-1251","utf-8", $string1);
echo $string1;
 
?>
</body></html>
 
А если хидер послать вначале?
Код:
<?php
header('Content-Type: text/html; charset=windows-1251');
дальше код парсера..
 
Так сайт в utf-8 какой смысл выдавать кодеровку win-1251 ?
 
А как к DLE прикрутить?Создал статическую страницу,вставил код как"Исходный текст HTML без фильтрации и изменений",сохранил.Но ничего не выводит кроме
(.*?)~is', browser($url), $data); preg_match_all('~
(.*?)
~is', browser($url), $text); $string = join(',', $data[1]); $string=iconv( "windows-1251","utf-8", $string); echo $string; echo " на сегодня:

"; //print implode('

*****

', $text[1]); //выводит все анекдоты //print implode('

*****

', array_slice($text[1], 0, 1)); //выводит первый анекдот, типа анекдот дня))) $string1 = join(',', array_slice($text[1], 0, 1)); $string1=iconv( "windows-1251","utf-8", $string1); echo $string1; ?>
 
Злобный бабко благодарю, все работает отлично! сосиска, я конечно не спец по скриптам, но в html страничку обычную не получится вставить на прямую этот код, его можно пихнуть (я так и сделал) напрямую index.php ( или template.php, что там на вордпресе ненаю) твоего шаблона (скина) сайта.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху