This webpage has been robot translated, sorry for typos if any. To view the original content of the page, simply replace the translation subdomain with www in the address bar or use this link.

Добавить динамический контент с другого сайта к себе на сайт с помощью PHP

Получить Дконтент с другого сайта

Вам понравилась динамическая информация на другом сайте - вот Вам простой способ как добавить к себе на сайт динамические данные с другого источника (погода, курсы биткоина, валют, виджеты и т.д.).

Вам не потребуются глубокие знания программирования php для быстрой настройки - достаточно подставить свои данные и на вашем сайте появится новый контент с стороннего сайта.

Функция PHP file_get_contents (PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8) "Получить содержимое файла в виде одной строки" используется предпочтительно в случае необходимости вернуть содержимое файла (запроса) в строке ответа.

Я лично думал, что для этой цели потребуется глубокое знание php, однако мой знакомый программист Zanner подсказал отличный способ, состоящий из нескольких строк кода, кроме этого, я нашел на одном ресурсе похожую информацию и код.

Чтобы заставить все работать, выполняем следующие рекомендации.

Вариант 1

Создаем файл с произвольным названием и расширением php, например, file.php и добавляем в него следующий php-код:

 <?
 $context = stream_context_create(
 ['http' => ['method' => 'GET', 'protocol_version' => '1.1', 'header' => ['User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0', 'Connection: close',]]]
 );

 //тут сторонняя страница сайта, с которой будем брать контент
 $stream = @fopen('http://site.ru/page', 'r', false, $context) or die ('Error connecting to weather!');

 //тут получаем страницу
 $webpage_data = @stream_get_contents($stream);

 //тут получаем информацию, в том числе заголовки ответа
 $data = @stream_get_meta_data($stream);

 if ($webpage_data)
 {
 // Определяем начало и конец необходимого фрагмента кода из которого мы возьмем весь контент (!не забываем про экранирование двойных кавычек)
 preg_match("/<div class=\"widget hidden\">.*?<\/div>/si", $webpage_data, $matches);

 // Если в нужном контенте встречается не нужный кусок текста (!пример в регулярном выражении), то его вырезаем
 $matches = preg_replace('/<i>.*?<\/i> <p><p>/', '<p>', $matches);

 // Вывод полученной и обработанной информации на экран
 // echo iconv('UTF-8','Windows-1251',$matches[0]); в случае если нужна перекодировка UTF-8 -> Windows-1251
 echo $matches[0];
 }
 else {echo "ИЗВИНИТЕ, ИНФОРМАЦИЯ НЕ ДОСТУПНА, ПОПРОБУЙТЕ ПОЗЖЕ...";} // обработчик ошибок

 ?>
 

Если нужно записать данные в файл file_print.php (установите права на запись!), код следующий:

 <?
 ob_start();

 // определяем файл для записи (установите права на запись!)
 $file_out = '/path-to-file/file_print.php';

 $context = stream_context_create(
 ['http' => ['method' => 'GET', 'protocol_version' => '1.1', 'header' => ['User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0', 'Connection: close',]]]
 );

 //тут сторонняя страница сайта, с которой будем брать контент
 $stream = @fopen('http://site.ru/page', 'r', false, $context) or die ('Error connecting to weather!');

 //тут получаем страницу
 $webpage_data = @stream_get_contents($stream);

 //тут получаем информацию, в том числе заголовки ответа
 $data = @stream_get_meta_data($stream);

 if ($webpage_data)
 {
 // Определяем начало и конец необходимого фрагмента кода из которого мы возьмем весь контент (!не забываем про экранирование двойных кавычек)
 preg_match("/<div class=\"widget hidden\">.*?<\/div>/si", $webpage_data, $matches);

 // Если в нужном контенте встречается не нужный кусок текста (!пример в регулярном выражении), то его вырезаем
 $matches = preg_replace('/<i>.*?<\/i> <p><p>/', '<p>', $matches);

 // Вывод полученной и обработанной информации на экран
 // echo iconv('UTF-8','Windows-1251',$matches[0]); в случае если нужна перекодировка UTF-8 -> Windows-1251
 echo $matches[0];
 }
 else {echo "ИЗВИНИТЕ, ИНФОРМАЦИЯ НЕ ДОСТУПНА, ПОПРОБУЙТЕ ПОЗЖЕ...";} // обработчик ошибок

 // записываем данные в файл
 $output = ob_get_contents();
 ob_end_clean();
 file_put_contents($file_out, $output);
 ?>
 

В адресной строке браузера запускаем данный файл (http://my-site.ru/file.php), на странице будет выведен контент со стороннего сайта.

Если вы открываете URI со специальными символами, такими как пробелы, вам необходимо закодировать URI с помощью urlencode ().

Вариант 2

Создаем в корне сайта файл с произвольным названием, например, file.php и добавляем в него следующий php-код:

 <?php
 // с кодировкой возможны проблемы, поэтому если вдруг появятся каркозябры, попробуйте добавить следующую строчку кода
 header('Content-Type: text/html; charset=windows-1251');

 // сторонняя страница сайта, с которой будем брать контент.
 $content = file_get_contents('http://site.ru/page');

 // определяем начало необходимого фрагмента кода, до которого мы удалим весь контент
 $pos = strpos($content, '<div class="start"><span class="needed-text">');

 // удаляем все до нужного фрагмента
 $content = substr($content, $pos);

 // находим конец необходимого фрагмента кода
 $pos = strpos($content, '</span></div>');

 // отрезаем нужное количество символов от конца фрагмента
 $content = substr($content, 0, $pos);

 //если в нужном контенте встречается не нужный кусок текста, то его вырезаем
 $content = str_replace('текст, который нужно вырезать','', $content);

 // выводим необходимый контент
 echo $content;
 ?>
 

Вместо:

http://site.ru/page — страница сайта, откуда нужно взять контент

<div class="start"><span class="needed-text"> — заменить на фрагмент кода, откуда начинается необходимый контент

</span></div> — заменить на фрагмент кода, где заканчивается нужный контент

Например, если нужный контент лежит в конструкции <div class="start"><span class="needed-text">, а заканчивается фрагмент конструкцией </span></div>, то вставляем в наш php-код эти значения, соответственно.




Для того, чтобы добавить этот контент на внутреннюю страницу нашего сайта, то добавляем в нее (внутреннюю страницу) следующий код:

 <?
 $content = file_get_contents('http://my-site.ru/file.php');
 echo $content;
 ?>
 

В адресной строке браузера запускаем данный файл (http://my-site.ru/file.php) и если все сделано правильно, на странице будет выведен контент со стороннего сайта.

Я не имею квалификацию в php но подобным кодом пользуюсь на этом сайте - у вас все получится :)

Via blogo-daru.ru & php.su & wiki


Created/Updated: 02.02.2022

stop war in Ukraine

ukrTrident

stand with Ukraine