Как получить данные с чужого сайта - $js=file_get_contents

12
S
На сайте с 13.11.2012
Offline
72
#11

Помогите изменить $js=file_get_contents на $string=file_get_contents

Есть код, получает заголовок и ссылку со стороннего сайта.

<?php
protected function getcates($nom){
$part = "snippet";

$js=file_get_contents("сайт.ру");
if(preg_match('#push\((?<json>.*?)\);#',$js,$match))

{
$wares=json_decode($match['json'])->wares;
$html = '';
foreach ($wares as $item)
{
$itemtitle = $item->title;
$arr1 = array('XXX');
$arr2 = array('');
$itemtitle=str_replace($arr1, $arr2, $item->title);
$item->title=str_replace($arr1, $arr2, $item->title);
$itemtitle = preg_replace('/[^\p{L}0-9 \!]/iu', ' ', $itemtitle);
$block = "";
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->config["key"]}&part=$part&order={$this->config[$nom.'sortingresults']}&maxResults={$this->config[$nom.'number']}&q=".urlencode($itemtitle)."&videoEmbeddable=true&videoSyndicated=true&type=video";
$data = $this->http(TRUE);
//var_dump($data);

foreach ($data->items as $yt) {
$block .= "

сюда поместить то, что в echo выводится так"<a href=\"".$match[1][$i]."\">".$match[2][$i]."</a><br/>";
только без echo

";
}
if(!empty($block)){
$html .= 'верхнее оформление'.$block.'нижнее оформление';
}
}
}
return $html;
}

?>

Помогите в него внедрить этот код:

<?
$string=file_get_contents("https://e-pay.tv/adverts/iframe.php?aff=101005&color=0a97fc&blocks=10&width=400&type=vertical");
preg_match_all("/<a.*?href=\"(.*?)\">.*?<h2.*?>(.*?)<\/h2>/s", $string, $match);

$n = count($match[1]);
for ($i = 0; $i < $n; $i++)

echo "<a href=\"".$match[1][$i]."\">".$match[2][$i]."</a><br/>";
?>

Нужно, чтобы в первом коде получали данные не через $js=file_get_contents; а через $string=file_get_contents; и далее по коду.

Спасибо!

p.s. готов оплатить

K0
На сайте с 01.09.2016
Offline
72
#12

Я не знаю, что у вас в старом коде делала часть обращающаяся к www.googleapis.com. Но если предположить, что она не нужна, то попробуйте так:

<?

protected function getcates($nom)
{
$string=file_get_contents("https://e-pay.tv/adverts/iframe.php?aff=102805&color=0a97fc&blocks=3&width=400&type=vertical");
if(preg_match_all("/<a.*?href=\"(.*?)\">.*?<h2.*?>(.*?)<\/h2>/s", $string, $matches))
{
$n = count($matches[1]);
for ($i = 0; $i < $n; $i++) $block .= "<a href=\"".$matches[1][$i]."\">".$matches[2][$i]."</a><br/>";
}
$html = "";
if(!empty($block))
{
$html .= 'верхнее оформление'.$block.'нижнее оформление';
}
return $html;
}
?>
S
На сайте с 13.11.2012
Offline
72
#13

А куда вставить это?

$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->config["key"]}&part=$part&order={$this->config[$nom.'sortingresults']}&maxResults={$this->config[$nom.'number']}&q=".urlencode($itemtitle)."&videoEmbeddable=true&videoSyndicated=true&type=video";
K0
На сайте с 01.09.2016
Offline
72
#14

Вы бы рассказали, что у вас этот код делал до того как вы надумали его изменить.

Что пытаетесь заменить на три ссылки?

S
На сайте с 13.11.2012
Offline
72
#15

В этот запрос нужно вписать то, что у вас выводится так

".$matches[2][$i]."

вместо q=".urlencode($itemtitle)."

И сам запрос

$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->config["key"]}&part=$part&order={$this->config[$nom.'sortingresults']}&maxResults={$this->config[$nom.'number']}&q=".urlencode($itemtitle)."&videoEmbeddable=true&videoSyndicated=true&type=video";

вставить в тело как в моем варианте.

Т.е. ваш код хороший но без главного поискового запроса.

K0
На сайте с 01.09.2016
Offline
72
#16

Smirnof,

По-моему вы пытаетесь скрестить ежа с ужом. :)

Ваш код делает примерно следующее:

1) Получает с другого сайта некий JSON и парсит его.

2) Из полученных данных выбирает заголовки и ищет по ним что-то на youtube.

3) Из найденного создает HTML-код. Какой именно, неизвестно, вы удалили. :)

По мне, так в блоке:

foreach ($data->items as $yt) {

$block .= "

сюда поместить то, что в echo выводится так"<a href=\"".$match[1][$i]."\">".$match[2][$i]."</a><br/>";
только без echo

";
вообще не должно быть $match[1][$i] и $match[2][$i] так как это совсем другой цикл уже по результатам полученным от www.googleapis.com!!!

В результате получается какое-то гадание на кофейной гуще. Неизвестно что было, непонятно что должно получится, видно только ваше желание прикрутить куда-то три ссылки.

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

S
На сайте с 13.11.2012
Offline
72
#17

Отправил лс, очень длинный код

K0
На сайте с 01.09.2016
Offline
72
#18

Smirnof,

Попробуйте заменить в начале функции это:

$part = "snippet";


$js=file_get_contents("сайт.ру");
if(preg_match('#push\((?<json>.*?)\);#',$js,$match))

{
$wares=json_decode($match['json'])->wares;
$html = '';
foreach ($wares as $item)
{
$itemtitle = $item->title;
на вот это:
$part = "snippet";

$js=file_get_contents("https://e-pay.tv/adverts/iframe.php?aff=102805&color=0a97fc&blocks=3&width=400&type=vertical");
if(preg_match_all("/<a.*?href=\"(.*?)\">.*?<h2.*?>(.*?)<\/h2>/s", $js, $matches))
{
$n = count($matches[1]);
$html = '';
for ($i = 0; $i < $n; $i++)
{
$item->title = $matches[2][$i];
$item->url = $matches[1][$i];

$itemtitle = $item->title;
S
На сайте с 13.11.2012
Offline
72
#19

Вы маг? :)

Спасибо!!!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий