Получить ссылку на картинку с помощью $js=file_get_contents

12
S
На сайте с 13.11.2012
Offline
72
2079

Пожалуйста, помогите вытащить url адрес картинки с помощью $js=file_get_contents

Мой код:

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];

Картинка в исходном коде:

<img id="banner" src="/i/product/thumb/420/42095.jpg" style="width: 90px; height: 90px; top: 7px; left: 0px; position: static;border:0px;">

Нужно что-то подобное $item->img = $matches..........;

Большое спасибо!

LEOnidUKG
На сайте с 25.11.2006
Online
1722
#1

preg_match_all('@<img id="banner" src="(.*?)"@smi');

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
S
На сайте с 13.11.2012
Offline
72
#2

Я не смогу корректно вставить ваш код в

if(preg_match_all("/<a.*?href=\"(.*?)\">.*?<h2.*?>(.*?)<\/h2>/s", $js,

и вывести в $item->img = $matches..........;

но попробую...

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

Конечно не сможете. И даже не пробуйте. Это код не для ссылки, а для картинки, как Вы и просили.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 13.11.2012
Offline
72
#4

Получается из одного запроса $js=file_get_contents одновременно ссылку, h2 и url картинки не вытянуть?

Если делать 2 $js=file_get_contents то данные будут разные, вывод рандомный, получится ссылка и h2 одни а картинка к ним другая.

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

Делайте 2 прегматча с одним js

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

preg_match_all('@<img id="banner" src="(.*?)"@smi', $matches);

print_r($matches);

не отдает url картинки

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

Естественно. Ведь картинка в $js, а в Вашем выражении $js отсутствует.

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

Сделал preg_match_all('@<img id="banner" src="(.*?)"@smi', $js, $matches);

print_r($matches[1]); выводит массив

$item->image = $matches[1]; ссылку на картинку не выводит, Array

LEOnidUKG
На сайте с 25.11.2006
Online
1722
#9

Найдите различия:

$item->url = $matches[1][$i];

И у вас:

$item->image = $matches[1];

---------- Добавлено 21.07.2017 в 23:39 ----------

А так, да $matches[1] это массив ваших картинок.

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

так $matches[1][$i] ссылок нет вообще, даже Array нет, я пробовал.

---------- Добавлено 22.07.2017 в 00:51 ----------

Разобрался. Спасибо!

---------- Добавлено 22.07.2017 в 01:36 ----------

Что не так?

<?php
$js=file_get_contents("");


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];


if(preg_match_all('@<img id="banner" src="(.*?)"@smi', $js, $matches))
{
$n = count($matches[1]);
$html = '';
for ($i = 0; $i < $n; $i++)
{

$item->image = $matches[1][$i];

$parts_ur = parse_url($item->url);

$catalog=explode('/', $parts_ur['path']);
$last_catalog=$catalog[count($catalog)-1];


echo '<li class="page-item">';
echo '<div class="pagethumb" data-toggle="tooltip" data-placement="top" title="'.$item->title.'"><a href="/' . $last_catalog . '" target="_blank"><img data-src="'.$item->image.'" src="https://appru.net/images/loading.svg" ></a></div>';
echo '<div class="info"><h3><a href="/' . $last_catalog . '" target="_blank">'.$item->title.'</a></h3><a class="genre" href="/' . $last_catalog . '" target="_blank">Бизнес</a></div>';
echo '</li>';

}
}
}
}
?>

Теперь картинки есть но h2 и url одни и те же везде :(

12

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