Научим систему таскать целые куски сайтов
Из-за возникшей недавно необходимости получить БОЛЬШОЙ кусок данных с сайта, начал ковырять веб-переменные, но получить большой кусок данных оказалось не так просто. Все регулярные выражения на тестах выдавали нужные данные, но в модуле этот код не работал. Разобраться в причинах такого поведения мне не удалось. Может это ограничение в системе или БД. Мне удалось взять маленький кусок с сайта, но получив эти данные они смотряться ужастно. Полученный кусок данных небольшого размера имел побочный код, но его оказалось можно просто вычистить.
Благодаря поискам, решение было найдено и большой кусок кода был получен. При помощи Егора и Skysilver мне удалось привести это решение к нужному виду.
Сам код очень мал и не требует глобальных знаний, все что понадобиться это умение найти в коде страницы нужный кусок. Я выполняю его через сценарий по расписанию.
// Первоисточник кода http://blogo-daru.ru/2016/11/27/dobavit-kontent-s-drugogo-sajta-k-sebe-na-sajt/
// с кодировкой возможны проблемы, поэтому если вдруг появятся каркозябры, попробуйте добавить следующую строчку кода
header('Content-Type: text/html; charset=windows-1251');
// сторонняя страница сайта, с которой будем брать контент.
$content = file_get_contents('http://kakoysegodnyaprazdnik.ru/');
// определяем начало необходимого фрагмента кода, до которого мы удалим весь контент
$pos = strpos($content, '<div id="main_frame">');
// удаляем все до нужного фрагмента
$content = substr($content, $pos);
// находим конец необходимого фрагмента кода (начало ненужного уже кода)
$pos = strpos($content, '<div id="social">');
// отрезаем нужное количество символов от конца фрагмента
$content = substr($content, 0, $pos);
//если в нужном контенте встречается не нужный кусок текста, то его вырезаем (Точнее тут происходит замена на "ничего") этот кусок кода можно повторять несколько раз, для удаления всего лишнего.
$content = str_replace('текст, который нужно вырезать','', $content);
// выводим необходимый контент.
//debmes($content);
// очищаем полученный код от лишних тэгов, перечисляем только те которые удалять не надо. https://php.ru/manual/function.strip-tags.html
$content = strip_tags($content, '<H2><p><a>');
// Заменяем куски кода на нужное нам (здесь после очистки из-за особенностей кода пришлось перед каждой большой точкой вначале строки вставить перенос строки ) https://php.ru/manual/function.str-ireplace.html
//На самом деле это можно делать и в коде выше, там где мы удаляем лишнее, но здесь мне показалось это удобнее и логичнее для формирования конечного вида плюс внесена регистро-независимость. Код так же можно дублировать по несколько раз.
$content = str_ireplace("•", "<br> •", $content);
//записываем в свойство
sg('out_ip.value_old',$content);
Вывод этого свойства на страницу делаю через html.
Не забываем нажимать палец вверх, это стимулирует авторов к написанию других статей.
Краснодар, Россия
На форуме: newz20