Как из js получить url адрес?

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

Не всегда срабатывает блок при перезагрузке или входе на сайт, не понимаю из-за чего.

У меня получился следующий код


Обсуждаемое сегодня
<?php
$js=file_get_contents('https://glopart.ru/ads/adunit/4031/script.js');
if(preg_match('#GLOPART_ADS.push\((?<json>.*?)\)#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo '<div class="div_most_commented_item">';
echo '<a href="'.$item->url.PHP_EOL.'" class="blue3" target="_blank">';
echo '<div class=div_table><div class=div_row><div class=div_cell>';
echo '<div class=div_most_commented_item_cover style="background: url(https://glopart.ru/uploads/'.$item->image.PHP_EOL.');">₽</div>';
echo '</div>';
echo '<div class=div_cell><span>'.$item->title.PHP_EOL.'</span></div></div></div></a></div>';
echo PHP_EOL;
}
}
?>

и

Из-за чего это может быть?

Сервер слабый?

Спасибо!

tommy-gung
На сайте с 22.11.2006
Offline
304
#12

тяни через курл и проверяй ошибки.

ну и вероятно нет смысла каждый раз тянуть. бери раз в день и сохраняй результат

Здесь не могла быть ваша реклама
S
На сайте с 13.11.2012
Offline
72
#13

Смысла тянуть каждый раз конечно нет, нагрузка в разы возрастает (грузится дольше), но мне нужно вывести 3-5 результатов а в https://glopart.ru/ads/adunit/4031/script.js при обновлении, разных результатов может быть 15-20.

Т.е. у меня сейчас при обновлении страницы и результат обновляется.

Было бы здорово получать раз в 24 часа, скажем 15 результатов и сохранять их в файл, потом рандомно выводить в блок без запроса к https://glopart.ru/ads/adunit/4031/script.js но это очень сложно для меня :(

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

Вот какую ошибку показывает когда блок пустой

Notice: Trying to get property of non-object in

$wares=json_decode($match['json'])->wares;

Warning: Invalid argument supplied for foreach() in

foreach ($wares as $item) {

W
На сайте с 09.04.2013
Offline
46
#15
Smirnof:
Вот какую ошибку показывает когда блок пустой
Notice: Trying to get property of non-object in
$wares=json_decode($match['json'])->wares;

Вот так должно работать:


Обсуждаемое сегодня
<?php
$js=file_get_contents('https://glopart.ru/ads/adunit/4031/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo '<div class="div_most_commented_item">';
echo '<a href="'.$item->url.'" class="blue3" target="_blank">';
echo '<div class=div_table><div class=div_row><div class=div_cell>';
echo '<div class=div_most_commented_item_cover style="background: url(https://glopart.ru/uploads/'.$item->image.');">₽</div>';
echo '</div>';
echo '<div class=div_cell><span>'.$item->title.'</span></div></div></div></a></div>';
}
}

?>
S
На сайте с 13.11.2012
Offline
72
#16

webjey, большое спасибо!

Работает :)

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

Пытаюсь создать дальнейшую обработку результатов вывода, столкнулся с проблемой появления 400 ошибки из-за спецсимволов (" и # - может их гораздо больше).

Можно из следующего кода удалить спецсимволы на лету, оставив пробелы или заменив их на + ?

<?php
$js=file_get_contents('https://glopart.ru/ads/adunit/4067/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo '<div class="div_most_commented_item">';
echo '<a href="/search/'.$item->title.'" class="blue3">';
echo '<div class=div_table><div class=div_row>';
echo '<div><span>'.$item->title.'</span></div></div></div></a></div>';
}
}

?>

Т.е. почистить результат для '.$item->title.'

Пример:

«100% УСПЕХ»

исправить на

+100%+УСПЕХ+

или на

100% УСПЕХ

Пробовал вставить $store=str_replace('"', '\'');

не помогло или не там вставил :(

Помогите, пожалуйста.

S
На сайте с 30.09.2016
Offline
469
#18
Smirnof:
Пробовал вставить $store=str_replace('"', '\'');
не помогло

Поможет, если функцию правильно писать

$store=str_replace('"', "'", $store);
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 13.11.2012
Offline
72
#19

Сделал так

<?php
$js=file_get_contents('https://glopart.ru/ads/adunit/4067/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$store=str_replace('"', "'", $store);
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
echo '<div class="div_most_commented_item">';
echo '<a href="/search/'.$item->title.'" class="blue3">';
echo '<div class=div_table><div class=div_row>';
echo '<div><span>'.$item->title.'</span></div></div></div></a></div>';
}
}
?>

Не сработало, появилась ошибка

Notice: Undefined variable: store in $store=str_replace('"', "'", $store);

S
На сайте с 30.09.2016
Offline
469
#20

Значит, у Вас переменная $store не определена. То есть, чтобы что-то обрабатывать, надо сначала понять, что именно. Функция str_replace() требует, чтобы ей дали строку $store, потому как с ничем она работать не будет. Я-то просто повторил ту переменную, которую Вы написали, лишь исправив синтаксис функции, ведь мне неизвестно, где оно у Вас должно работать. А так, могу только догадаться, что надо написать что-то вроде

<?php

$js=file_get_contents('https://glopart.ru/ads/adunit/4067/script.js');
if(preg_match('#push\((?<json>.*?)\);#',$js,$match)){
$wares=json_decode($match['json'])->wares;
foreach ($wares as $item) {
$itemtitle=str_replace('"', "'", $item->title);
echo '<div class="div_most_commented_item">';
echo '<a href="/search/'.$itemtitle.'" class="blue3">';
echo '<div class=div_table><div class=div_row>';
echo '<div><span>'.$itemtitle.'</span></div></div></div></a></div>';
}
}
?>
123 4

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