@9StarRu

Как получить url картинки в preg_match_all?

Через $js=file_get_contents добился вывода картинок но потерял содержимое h2 и url ($item->title и $item->url).

Сейчас картинки все разные как и нужно но h2 и ссылка везде одинаковые.

Помогите, пожалуйста, исправить ошибку в моем коде.
<?php
$js=file_get_contents("http://сайт.ру");

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 ''.$item->title.' ' . $last_catalog . ' '.$item->image.'';

}
}
}
}
?>


Сделал по другому, так

<?php
$js=file_get_contents("http://сайт.ру");

preg_match_all('@<img id="banner" src="(.*?)"@smi', $js, $matches);
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];
$item->image = $matches[1][$i];

//if(preg_match_all('@<img id="banner" src="(.*?)"@smi', $js, $matches))
//$item->image = $matches[1][$i];

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

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

echo ''.$item->title.' ' . $last_catalog . ' '.$item->image.'';

}
}
?>


Ссылки и h2 все разные а картинок нет :(

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

Спасибо!
  • Вопрос задан
  • 681 просмотр
Решения вопроса 1
XXXXPro
@XXXXPro
Fullstack Web developer
Проблема в том, что и первое и второе выражение сохраняют список в одну и ту же переменную $matches, из-за этого картинки и теряются. Сделайте разные переменные ($matches_h2 и $matches_img, например), тогда все станет нормально.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
в мемориз, много полезных юзекейсов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы