Skip to content

Instantly share code, notes, and snippets.

@andreymukha
Last active December 1, 2022 15:07
Show Gist options
  • Save andreymukha/9c27217cd46f99a83f26 to your computer and use it in GitHub Desktop.
Save andreymukha/9c27217cd46f99a83f26 to your computer and use it in GitHub Desktop.
Яндекс реферат
<?php
/**
* Яндекс рефераты. Генерирует заголовок и тело реферата.
* @author Andrey Mukha
* @param mixed $category
* Доступные значения:
* - Конкретная категория из массива $arr
* - random (случайная категория из массива $arr)
* - all (выбор сразу всех категорий)
* - Массив из нескольких конкретных категорий
* @return array категория, заголовок и тело реферата
*/
function yandex_referat($category = 'random'){
//Массив всех категорий
$arr = array(
'astronomy',
'geology',
'gyroscope',
'literature',
'marketing',
'mathematics',
'music',
'polit',
'agrobiologia',
'law',
'psychology',
'geography',
'physics',
'philosophy',
'chemistry',
'estetica',
);
//Рандомный выбор категории
if($category == 'random'){
$category = $arr[array_rand($arr)];
}
//Выбор всех категорий
if($category == 'all'){
$category = implode('+', $arr);
}
//Несколько определённых категорий в массиве
if(is_array($category)){
$category = implode('+', $category);
}
$content = file_get_contents('http://referats.yandex.ru/referats/?t='.$category);
preg_match('!<div class="referats__text">(.*?)<\/p><\/div>!s', $content, $referat);
preg_match('!<div>(.*?)</div>!u', $referat[0], $cat);
preg_match('!«(.*?)»!', $referat[0], $title);
preg_match('!<p>(.*)</p><\/div>!su', $referat[0], $body);
return array(
'cat' => preg_replace('![^А-Яа-я ]!u', '', trim($cat[0])),
'title' => $title[1],
'body' => str_replace("</p><p>", "\n\n", $body[1]),
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment