Smirnof

Рейтинг
72
Регистрация
13.11.2012
Интересы
efcb2e
'[umka:
;14957697']Но не проще удалить из строки всё, кроме текста?

Проще и лучше, как?

Просто строку эту я не сам пишу, получаю с другого сайта.

Самое первое сообщение, что не понятно?

Пожалуйста, помогите разобраться, не могу получить список ключевых слов от youtube.

Я хочу получить <meta name="keywords" content=" от youtube

Благодаря Дикий пионер и его подсказке о join я их получил в виде слов.

Теперь проблема в этом

:) я очень хорошо представляю то, что хочу... проблема в другом.

Так это опять print_r, а Sitealert говорит, что print_r не нужно использовать :(


<?php
$b = array (", ",Main::tags());
$results = print_r($b, true); // $results теперь содержит вывод print_r
?>

ничего не выводит

1<?php
$b = array (", ",Main::tags());
$results = print_r($b, false); // $results теперь содержит вывод print_r
?>

выводит массив столбиком

Помогите исправить

<?php
$my_array=join(", ",Main::tags());
print ($my_array);
print Main::tags();
?>

пожалуйста.

Или дайте ссылку на мануал по этой теме ... вывод массива...

Так у меня реально и не получается.

Я неделю с массивом разбирался, и решение выше я в сети нашел, от сюда и $my_array...


<?php
$my_array=join(", ",Main::tags());
print ($my_array);
print Main::tags();
?>

Тоже работает но с теми же ошибками.

Понял в чем причина )

Помогите вписать значение из конфига в мою конструкцию, верно.


<?php
$my_array=join(", ",Main::tags());
print_r($my_array);
echo Main::tags(); //выводит данные из конфига если нет ключей
?>

Пробовал else применить, не получилось.

Сейчас работает, если ключи с ютуба получены они отображаются а в конце добавляется Array + ошибка

Notice: Array to string conversion in в строке echo Main::tags();

Если ключи с ютуба не получены, значение заданное в конфиге отображается корректно но тоже есть ошибка

Warning: join(): Invalid arguments passed in в строке $my_array=join(", ",Main::tags());

Спасибо!

totamon, еще хотел поинтересоваться,

ранее функция получала конкретные запросы из админки, теперь получает их налету $js=file_get_contents.

В админке было:

protected function getcates($nom){ - блок

блок 1 - один запрос;

блок 2 - второй запрос;

выводил разные результаты.

Теперь в админке прописано кол-во роликов для блока (5) и название блока $nom,

если название заполнено - блок выводить, не заполнено - не выводить.

В результате на сайте стали появляться блоки с одинаковыми результатами (роликами).

Получается, что при формировании двух блоков, происходит 2 запроса к $js=file_get_contents, так? :)

И видимо в результатах двух разных обращений к $js=file_get_contents, встречаются одни и те же запросы из-за чего и отображаются блоки с одинаковыми результатами (роликами).

Можно функцию изменить таким образом, чтобы обращение к $js=file_get_contents было одно и уже из его результатов брать ключи для разных блоков?

Сам $js=file_get_contents может выводить от одного до пяти результатов...

Работа функции по одному или двум запросам может вернуть пустой результат и блоки не отобразятся, это не должно повлиять на работу следующих блоков.

Пожалуйста, помогите разобраться, если я смог донести свою мысль.

Спасибо!

Функция

protected function getcates($nom){

$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) {

//$arr1 = array('(', ')', '{', '}', ':', '-', '[', ']', '"', ' ', '/', '#');
//$arr2 = array('', '', '', '', '', '+', '', '', '', '+', '+', '');
$itemtitle=$item->title;
//$itemtitle=str_replace($arr1, $arr2, $item->title);

}
}

$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);
$html = "";
foreach ($data->items as $yt) {

// global $listQueryVideoHit;

if (!isset($listQueryVideoHit))
$listQueryVideoHit = 0;

elseif($listQueryVideoHit === 3)
$listQueryVideoHit = 0;

$html .= "<div class='div_topic_cover topic_cover_".(++$listQueryVideoHit)." reviews'>
<a href=\"".Main::href("video/{$yt->id->videoId}")."\" class=\"a_topic_cover\">
<img src=\"/themes/images/icon/blank_275x180.png\" class=\"img_topic_cover\" alt=\"{$yt->snippet->title}\" style=\"background: url(https://img.youtube.com/vi/{$yt->id->videoId}/mqdefault.jpg;\">
<div class=\"div_topic_cover_caption\">{$yt->snippet->title}</div>
</a>
</div>";
}

if(!empty($html)){

$html = '<div class="div_index_topics_block"><a href="/search/'.urlencode($itemtitle).'" class="div_index_caption2 reviews">'.($item->title).'</a></div>'.$html.'<div id="div_index_topics_next_reviews_0" class="clear"></div> <div class="center clear" id="div_index_topics_more_reviews_0"><noindex><a href="/search/'.urlencode($itemtitle).'" rel="nofollow" class="div_index_topics_more">Еще видео</a></noindex></div>';

}


return $html;
}

Пример:

в админке заполнил поля для 5 блоков,

$js=file_get_contents отдала 5 результатов,

успешно обработалось 3, на сайте появилось 3 блока.

Если успешно 5, то и на сайте 5 блоков.

а.... щас потестирую :)

я думал это код для нижнего оформления блока, после выполнения $html .= "

---------- Добавлено 25.02.2017 в 21:09 ----------

totamon, спасибо, блок стал исчезать! :)

Пошел подробнее разбираться...

---------- Добавлено 25.02.2017 в 21:13 ----------

А как вывести код после выполнения $html .= "

это


}

if(!empty($html)){

$html = '.......код.......'.$html;
}

return $html;
}

до $html .= "

а после как вывести?



---------- Добавлено 25.02.2017 в 22:50 ----------

Разобрался! :)

totamon, спасибо!

Всего: 235