Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601

Как перебрать массив с ссылками с подключением файла?

26.04.2020, 20:49. Показов 2504. Ответов 28
Метки php7 (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую коллеги.
Входные данные:
Есть массив с ссылками, есть функция, которая вынесена в отдельный файл для обработки, она обрабатывает одну ссылку за раз.

Как перебрать массив с ссылками, чтобы подключая файл с функцией обработать каждую ссылку в массиве?

Что-то типа вариантов:

PHP
1
2
3
4
    foreach ($ssil1 as &$value) {
       $url1 = $value;
       include_once ('file/file.php');
    }
PHP
1
2
3
for($i=0;$i<count($ssil11);$i++){
     $ssil11[$i] = $url;
}
а $url передать в файл...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2020, 20:49
Ответы с готовыми решениями:

Есть ли разница между подключением статической библиотеки и подключением одного только файла
Есть ли вообще разница между подключением статической библиотеки, например с файлом Unit1.h и подключением одного только файла Unit1.h ...

Как перебрать весь массив?
Был когда-то json после его декодирования и вывода через var_dump($info); получился вот такой массив. массив (сокращенная версия): ...

Как правильно перебрать массив
Добрый день! Есть массив $arr = , 'number_docs' =&gt; ], '1' =&gt; , 'number_docs' =&gt; ], ]; Мне нужно его перебрать и...

28
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
28.04.2020, 21:57  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от estic Посмотреть сообщение


Добавлено через 7 минут
Зачем все это? Что за странное требование использовать именно функцию из файла? Если хотите "скормить" адрес библиотечной функции, так и пишите. И не забудьте описать аргументы этой функции и кратко ее назначение.

Добавлено через 1 минуту
Может, функция вовсе не возвращает управление. Или делает это только по условию, которое вы не выполняете.
Что за странное требование использовать именно функцию из файла?

- скрипт, который проводит работу над ссылкой, зачем мне весь этот код держать в одном файле? пусть подключается и отрабатывает

И не забудьте описать аргументы этой функции и кратко ее назначение.

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

Может, функция вовсе не возвращает управление. Или делает это только по условию, которое вы не выполняете.

- на что намекаете? можно подробнее? речь о return?
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
28.04.2020, 21:58
Смотрите что у вас там в подключаемом файле. Основные варианты вам показали.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
29.04.2020, 20:40  [ТС]
Цитата Сообщение от D_Vik Посмотреть сообщение
Смотрите что у вас там в подключаемом файле. Основные варианты вам показали.
Кстати у меня в функции вот что идет в теле:

PHP
1
2
3
    foreach ($ssil12 as $https) {
        perebor($https);
    }
PHP
1
2
3
4
5
function perebor ($https='') {
 
    $html = str_get_html($https); //получаем объект - вот тут обработка ссылки, может в ней проблема? остается только первая, а сам перебор пытается отработать
 
}
Добавлено через 22 секунды
строка 3 в функции
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
01.05.2020, 23:05
rsl89, это всё что в теле функции описано?
PHP
1
2
3
4
5
function perebor ($https='') {
 
    $html = str_get_html($https); //получаем объект - вот тут обработка ссылки, может в ней проблема? остается только первая, а сам перебор пытается отработать
 
}
? А смысл тогда какой в ней? Вам сперва нужно почитать, как же работают функции, определяемые пользователем, а после - попробовать реализовать свой вариант.
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
03.05.2020, 02:21
Лучший ответ Сообщение было отмечено rsl89 как решение

Решение

Покопался немного в вашем парсере, у вас подключается файл curl.php. Там идет инициализация, но функция curl_init не получает данных, а точнее ссылку на ресурс. Оберните этот кусок кода в функцию :

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function curl ($url) {
 
  $ch = curl_init($url);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 160);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  if(!empty($prx)){curl_setopt($ch, CURLOPT_PROXY, $prx);}
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_REFERER, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.125 Safari/533.4");
  $url = curl_exec($ch);
  curl_close($ch);
 
  return $url;
}
В файле prs6.php обращайтесь к ней так :

PHP
1
  $html = str_get_html(curl($url));
А вообще, весь этот кошмар, который там присутствует подлежит рефакторингу.

Добавлено через 31 минуту
Немного переписал файл prs6.php, и логику происходящего смог проследить до этого момента :

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  require_once ('prs4/simple_html_dom/simple_html_dom.php');
  require_once('curl.php');
  require_once('prs4/prs4.php');
  require_once('prs4/db.php');
 
  if (!empty($_POST['url'])) {
    $html = str_get_html(curl($_POST['url']));
 
    foreach ($html -> find ('div[class=desc] h3 a[href]') as $ssil) {
      $ssil1[] = $ssil -> href;
    }
 
    $sitemain = 'https://doramatv.live';
 
    foreach ($ssil1 as $value) {
      $value = $sitemain.$value;
      echo $value, '<br>';
    }
  }
Получаем массив такого рода :



Что требуется дальше, нужны пояснения.
1
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
03.05.2020, 03:47
В архиве переписал как оно должно примерно быть, парсит до картинок включительно, далее думаю разберетесь.
Вложения
Тип файла: zip archive.zip (26.4 Кб, 1 просмотров)
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
03.05.2020, 19:25  [ТС]
Цитата Сообщение от D_Vik Посмотреть сообщение
В архиве переписал как оно должно примерно быть, парсит до картинок включительно, далее думаю разберетесь.
Немного переписал файл prs6.php, и логику происходящего смог проследить до этого момента :
- спасибо, так более лаконично

парсит до картинок включительно, далее думаю разберетесь.
- там дальше самое интересное))

Но перебор работает, самая главная ошибка найдена - это проблема в curl.

Спасибо большое за помощь и за потраченное время!

Осталось несколько моментов по самому скрипту.
Может быть подскажите?

Сейчас картинки вообще не выводит:
PHP
1
2
3
4
5
6
7
8
9
10
    foreach ($html->find('img[data-thumb]') as $poster) {
        $poster2 = $poster->src;
        $strrandd = strtotime("now");
        $put = 'prs4/data/' . $strrandd . "." . array_pop(explode('.', $poster2));
        file_put_contents($put, file_get_contents($poster2));
    }
 
    echo "</br></br>";
    echo "<img src = \"" . $poster2 . "\">";
    echo "</br></br>";
и как быть в этом месте?
PHP
1
$save['alt_name'] = str_replace('/', '', parse_url($html, PHP_URL_PATH));
таким образом я парсил альтернативное имя для, из урла которое подставлялось, но теперь идет перебор по урлам, логично вставить туда $html, но это не помогает, написать функцию для данного элемента или есть способы по проще?
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
03.05.2020, 20:33
С картинками можно поступить так наверное:

PHP
1
2
3
4
5
6
7
8
foreach ($html -> find ('img[data-thumb]') as $poster) {
 
  $put = 'prs4/data/' . strtotime("now") . "." . array_pop(explode ('.', $poster -> src));
  file_put_contents($put, file_get_contents ($poster -> src));
 
}
 
echo '<img src = "' . $put . '">';
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
03.05.2020, 21:37  [ТС]
Цитата Сообщение от D_Vik Посмотреть сообщение
С картинками можно поступить так наверное:

PHP
1
2
3
4
5
6
7
8
foreach ($html -> find ('img[data-thumb]') as $poster) {
 
  $put = 'prs4/data/' . strtotime("now") . "." . array_pop(explode ('.', $poster -> src));
  file_put_contents($put, file_get_contents ($poster -> src));
 
}
 
echo '<img src = "' . $put . '">';
Все четко! Спасибо!

PHP
1
$save['alt_name'] = str_replace('/', '', parse_url($html, PHP_URL_PATH));
Осталось с этим решить, буду думать

Добавлено через 47 минут
Цитата Сообщение от rsl89 Посмотреть сообщение
Все четко! Спасибо!

PHP
1
$save['alt_name'] = str_replace('/', '', parse_url($html, PHP_URL_PATH));
Осталось с этим решить, буду думать
Разобрался. Все отлично!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2020, 21:37

Как перебрать массив из fetchAll() ?
День добрый! Знакомлюсь с PDOstatement. Как я понял fetchALL() выдаёт массив. Как можно перебрать этот массив? Пример ниже не...

Как перебрать двумерный массив кнопок?
Есть двумерный массив кнопок CheckBox reagent = new CheckBox; public Form2() { ...

Массив: Как перебрать элементы многомерного массива?
Здравствуйте! Подскажите пожалуйте, сегодня вечер убил, но до конца не понял некоторых нюансов по работе с массивами, а если быть точным...

Как перебрать и записать в массив нужные ячейки таблицы?
Всем доброго вечера! Прошу подсказать в следующем вопросе. Имеется таблица! &lt;!DOCTYPE html&gt; &lt;html...

Подскажите как перебрать массив по значению его элемента
Дело обстоит следующим образом: Есть большой массив который я получаю по API, вот один из его элементов: =&gt; stdClass Object ( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru