- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
1. с помощью $js=file_get_contents получаю данные со стороннего сайта - title
2. далее, полученный title отправляю в поиск
3. получаю результат поиска
Проблема в том, что функция получив в ответ от $js=file_get_contents 2 и более title использует один и по нему выдает результат.
То есть, если в админке я создал 5 блоков (выведет 5 блоков с результатами на мой сайт)
то $js=file_get_contents будет обработана 5 раз, из-за чего несколько блоков на сайте могут быть одинаковыми, так как результаты выполнения пяти $js=file_get_contents частично могут быть одинаковыми (получим 5 title, 2 или 3 из которых могут быть идентичны), следовательно и на сайте будут повторы.
Как переписать или исправить мою функцию так, чтобы $js=file_get_contents выполнялась один раз и выводила столько блоков на сайте, сколько title было получено?
title ставится в поиск в строке $this->url --- q=".urlencode($itemtitle)."
$part = "snippet";
$js=file_get_contents('https://glopart.ru/ads/adunit/4640/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
$itemtitle = $item->title;
$itemtitle = preg_replace('/[^\p{L}0-9 \!]/iu', ' ', $itemtitle);
}
}
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->config["key"]}&part=$part&order=date&maxResults=4&q=".urlencode($itemtitle)."&videoEmbeddable=true&videoSyndicated=true&type=video";
$data = $this->http(TRUE);
$html = "";
foreach ($data->items as $yt) {
$html .= "РЕЗУЛЬТАТ РАБОТЫ ФУНКЦИИ {$yt->id->videoId}{$yt->snippet->title}";
}
if(!empty($html)){
$html = 'шапка блока'.$html.'футер блока';
}
return $html;
}
Попробовал изменить так:
$part = "snippet";
$js=file_get_contents('https://glopart.ru/ads/adunit/4640/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
$titles = [];
foreach ($wares as $item) {
$itemtitle = $item->title;
$itemtitle = preg_replace('/[^\p{L}0-9 \!]/iu', ' ', $itemtitle);
$titles[] = $itemtitle;
}
}
//$html = "";
foreach ($titles as $itemtitle) {
$this->url = "https://www.googleapis.com/youtube/v3/search?key={$this->config["key"]}&part=$part&order=date&maxResults=4&q=".urlencode($itemtitle)."&videoEmbeddable=true&videoSyndicated=true&type=video";
$data = $this->http(TRUE);
$html = "";
foreach ($data->items as $yt) {
$html .= "РЕЗУЛЬТАТ РАБОТЫ ФУНКЦИИ {$yt->id->videoId}{$yt->snippet->title}";
}
}
if(!empty($html)){
$html = 'шапка блока'.$html.'футер блока';
}
return $html;
}
Не помогло, повторы не пропали и страница стала в трое дольше грузиться, хотя должна ускориться.
Помогите пожалуйста, очень надо но я не осилю 100% :(
Если я верно понял, то
foreach ($titles as $itemtitle) {
где-то перед этим вставьте http://php.net/manual/ru/function.array-unique.php убрать не уникальные title
Спасибо! Попробую.
Но это наверное не совсем то, так я с помощью array_uniqu уберу повторы но запросов к $js=file_get_contents останется 5, хотелось бы сократить до одного.
---------- Добавлено 05.03.2017 в 11:12 ----------
Повторы тоже не уберутся, т.к. array_uniqu будет проверять каждый запрос $js=file_get_contents
а $js=file_get_contents выдает результат без повторов.
Повторы появляются в результате обработки пяти $js=file_get_contents, вот я и хочу выполнить один раз $js=file_get_contents и вывести результат на основе получеyных в нем title