Задать вопрос

Как спарсить изображения с помощью php?

Здравствуйте!
Подскажите как решить задачу.
Нужно вывести список всех изображений со страницы, и разделить их на две части, которые расположены локально, и на другом сервере. Получается надо проверить с чего начинается атрибут src в теге img, с http:// или нет.

Я нашел парсер, и он работает. С помощью PHP Simple HTML DOM Parser.
Выводит список всех изображений.
<?php 
	include "simple_html_dom.php";

	$html = file_get_html("http://ssau.ru");

	foreach ($html -> find('img') as $element) {
		echo $element-> src . '<br>';
	}
?>

62942f21eed444f68303f3bff7eebfbc.png

Но как разбить их на локальные и нет у меня не получается. Например в два разных div'a.
Я в php не силен.
Кто подскажет?

Заранее благодарен.
  • Вопрос задан
  • 4368 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
BedwaRe
@BedwaRe
Пиши код
<?
    include "simple_html_dom.php";

    $html = file_get_html("http://ssau.ru");

    foreach ($html -> find('img') as $element) {
        if (strpos($element, "http") === false) {
            echo $element-> src . '<br>';
        }
    }
?>

Выведет только локальные элементы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
OlegLazarenko
@OlegLazarenko
<?php
	include "simple_html_dom.php";

	$html = file_get_html("http://ssau.ru");

	foreach ($html -> find('img') as $element) {
		$imgType = $element->src[0] == '/' ? 'local' : 'remote';
		$imgs[$imgType][] = $element->src;
	}

	echo 'Локальные картинки<br>';
	foreach ($imgs['local'] as $img) echo "$img<br>";

	echo 'Картинки с других серверов<br>';
	foreach ($imgs['remote'] as $img) echo "$img<br>";
?>


Не проверял
Ответ написан
Комментировать
@zetabit
ну список адресов есть, научитесь выделять хост из адреса, придумайте алгоритм (
есть адрес это строка, нужно из строки вырезать хост и сравнить с локальным хостом
например хост вырезать с позиции символов ["://" + 3 - т.к. это три символа] по позицию "/" или до конца строки [если нет символа "/"], нужно учесть что вначале до подстроки "хост" есть еще два таких символа "//"

и реализуйте его, советую посмотреть функции работы со строками в документации php
п.с. и например те строки что без хостов (тоже это определять) вначале считать сразу локальными....
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽