Php скрипт вывода случайной цитаты с BASH.ORG.RU

Разное

Многие пользуются сервисами сайта для отображения цитат.

Но на мой взгляд, это неудобно. Неудобно для вебмастера.

Почему? Да очень просто. Есть официальные сервисы — вставка java кода и rss. Но первый для поисковых систем ничего не показывает, второй содержит кучу ссылок на bash.org.ru, что при использовании стандартных средств может быть воспринято поисковиками как ссылочный спам.

На одном из сайтов мне понадобилось вставлять случайную цитату с bash.org.ru, пришлось написать код, удовлетворяющий следующим требованиям:

  1. Выводить цитаты случайным образом;
  2. Выводить их из новых, например того же rss;
  3. Ограничить число обращений сайта к источнику, до одного в час.

Не вдаваясь в подробности приведу пример кода:

$filename = getcwd().’/temp/bash.xml’; //где будет находится наш файл с цитатами башорга
if (!file_exists($filename) or (time() > filemtime($filename) + 60*60*1) )<//60*60*1 — время жизни нашего файла
get_content();
>

// Создание объекта SIMPLEXML и загрузка документа
$content = join («», file($filename));
// Создание объекта SIMPLEXML и загрузка документа
$xml = simplexml_load_string($content);
$text = «Случайный анекдот от bash.org.ru:

n»;
foreach ($xml->channel->item[rand (0, count($xml->channel->item))]->children() as $items) ;//выбираем случайную запись из rss
$description = iconv(«UTF-8″,»windows-1251», $items); //конвертируем при необходимости кодировку
$description = str_replace («

», «
», $description);//тут убираем ненужный двойной перевод строки
$text .= «$description

n»;
echo $text; //ну и выводим нашу цитату
function get_content($site_path) //функция загрузки файла, не идеал, но работает
//ссылка rss на bash.org.ru
$link = «http://bash.org.ru/rss/»;
//загружаем
$fd = fopen($link, «r»);
$text=»»;
if (!$fd) echo «Запрашиваемая страница не найдена»;
else
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
$fp = fopen( getcwd().’/temp/bash.xml’, «w»);
fwrite($fp, $text);
fclose ($fp);
>
// Закрыть открытый файловый дескриптор
fclose ($fd);
return true;
>
?>

Работу данного php скрипта можно посмотреть здесь: php скрипт цитаты с bash.org.ru

Еще по теме:  Недостаточно памяти сервера для обработки команды
Оцените статью
Добавить комментарий