Помогите, не работает перебор массива. Есть массив с ссылками: $ssil12 Задача подключить скрипт обработки одной ссылки, перебрать массив с ссылками, выполняя скрипт по каждой ссылке перебор: PHP: foreach ($ssil12 as $https) { perebor($https); } Функция (в ранее подключенном файле): PHP: function perebor ($https='') { $html = str_get_html($https); //получаем объект //обрабатывает ссылку, вносит в бд } В теле функции : $html = str_get_html($https); //получаем объект может в него не передаются ссылки поочередно?
1. 99,9% функция perbor() не подозревает о существовании str_get_html() 2. что мешает посмотреть - что приходит внутри ? типа print_r($https);
забыл дописать, перебор берет только первую ссылку и обрабатывает ее и все, несмотря на указание перебора дальше перебор остальных ссылок не идет --- Добавлено --- конечно я смотрел что происходит с $https, print_r($https) печатает только одну ссылку, первую из массива
Вот: Array ( [0] => https://doramatv.live/the_raid__redemption [1] => https://doramatv.live/the_tiger_mask [2] => https://doramatv.live/iron_girl [3] => https://doramatv.live/the_foreigner [4] => https://doramatv.live/marrying_the_mafia_2 [5] => https://doramatv.live/bikuu [6] => https://doramatv.live/iceman [7] => https://doramatv.live/the_adventurers [8] => https://doramatv.live/the_beast [9] => https://doramatv.live/a_better_tomorrow_4 [10] => https://doramatv.live/saving_general_yang [11] => https://doramatv.live/gachiban_max [12] => https://doramatv.live/detektiv_novichok [13] => https://doramatv.live/mstitel [14] => https://doramatv.live/wolf_warriors_2 [15] => https://doramatv.live/heartbreak_hotel [16] => https://doramatv.live/the_storm_riders [17] => https://doramatv.live/nameless_gangster__rules_of_the_time [18] => https://doramatv.live/shiri [19] => https://doramatv.live/money_bag [20] => https://doramatv.live/umizaru_4__brave_hearts [21] => https://doramatv.live/air_strike [22] => https://doramatv.live/009_no_1__the_end_of_the_beginning [23] => https://doramatv.live/bangkok_adrenaline [24] => https://doramatv.live/three__2016_ [25] => https://doramatv.live/the_knight_of_shadows__between_yin_and_yang [26] => https://doramatv.live/the_flying_swords_of_dragon_gate [27] => https://doramatv.live/ichi_the_killer [28] => https://doramatv.live/good_friends [29] => https://doramatv.live/all_bark_no_bite [30] => https://doramatv.live/the_spy__2012_ [31] => https://doramatv.live/the_rebel [32] => https://doramatv.live/cyber_wars [33] => https://doramatv.live/gingko_bed_2 [34] => https://doramatv.live/yakuza_justice__erotic_code_of_honor [35] => https://doramatv.live/huligany [36] => https://doramatv.live/an_empress_and_the_warriors [37] => https://doramatv.live/brotherhood_of_blades_ii__the_infernal_battlefield [38] => https://doramatv.live/manhunt__2017_ [39] => https://doramatv.live/china_1911 [40] => https://doramatv.live/dragonball_evolution [41] => https://doramatv.live/cold_war [42] => https://doramatv.live/the_four_2 [43] => https://doramatv.live/legendary_amazons [44] => https://doramatv.live/three_kingdoms_resurrection_of_the_dragon [45] => https://doramatv.live/little_big_soldier [46] => https://doramatv.live/the_legend_of_evil_lake [47] => https://doramatv.live/sweet_alibis [48] => https://doramatv.live/switch [49] => https://doramatv.live/running_wild [50] => https://doramatv.live/zatoichi [51] => https://doramatv.live/nerushimyi [52] => https://doramatv.live/bud_v_avangarde [53] => https://doramatv.live/who_s_got_the_tape_ [54] => https://doramatv.live/sailor_suit_and_machine_gun__graduation [55] => https://doramatv.live/the_guillotines [56] => https://doramatv.live/high___low_the_mighty_warriors [57] => https://doramatv.live/my_school_mate__the_barbarian [58] => https://doramatv.live/kungfu_monstr [59] => https://doramatv.live/siyama__village_of_warriors [60] => https://doramatv.live/the_scam [61] => https://doramatv.live/taekwonboys [62] => https://doramatv.live/vengeance_is_mine [63] => https://doramatv.live/tekken [64] => https://doramatv.live/feibl [65] => https://doramatv.live/fist_of_legend [66] => https://doramatv.live/fearless [67] => https://doramatv.live/captured [68] => https://doramatv.live/city_hunter__1993 [69] => https://doramatv.live/the_masked_girl )
@ADSoft, там походу проблема в самом «черном ящике». ТСу на разных форумах уже и намекали на это, и прямо об этом говорили, а он все мыкается, бедолага. --- Добавлено --- P.S. Последний пост ТСа сильно смахивает на жесткий спам
дайте прямой ответ ребят(( чтобы я не "мыкался" яж новичок, уже 3 дня сижу не могу этот момент разобрать((( --- Добавлено --- это не спам...я просто ищу где помогут
Я тебе на др. форуме прямо написал: может, проблема тут: str_get_html($https). Но она может быть и тут: PHP: //обрабатывает ссылку, вносит в бд Свободен
//обрабатывает ссылку, вносит в бд - эта часть скрипта работает безукоризненно, когда даешь ей одну ссылку, я пытался заставить его перерабатывать каждую ссылку по очереди из массива. понятно, помощи не дождешься, особенно от тебя miketomlin
Mля, тут помогут только телепаты! Не заставляй посылать тебя куда подальше. --- Добавлено --- И, да, пинок под зад – часто самая действенная помощь, даже если вы пока этого не понимаете.
ну тогда PHP: foreach ($ssil12 as $https) { echo $https.'<br/>'; } и смотрите - если ссылки в цикле выводятся - то "дело было не в бобине" )))
Не верю .... возможно есть еще какой то код между строк, который вы нам не показываете если преде прямо циклом print_r() выводит то что вы показали
print_r тоже выводит только одну ссылку, но если печатать массив, который хочешь перебрать, то печатает весь массив Весь КОД: PHP: <head> <title>Dor0</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <form action="" method="POST"> <input type="text" name="url" size="50" placeholder="Адрес раздела"> <span>В категорию:</span><select name='cat'><option value='0'>Прочие</option><option value='5'>Основные</option></select> </br></br><span>Прокси</span></br><input type="text" name="prx" size="100" placeholder="177.67.82.13:8080"> </br></br><input type="submit" name='buttonpars' value="Спарсить"> </form> </body> <?php $prx=''; if(!empty($_POST['prx'])){$prx=$_POST['prx'];} require_once ('prs4/simple_html_dom/simple_html_dom.php'); //подключаем библиотеку DOM // Првоеряем заполнено ли поле URL if (isset($_POST['buttonpars'])) { $url = $_POST['url']; if ($_POST['url'] == '') { echo 'Введите URL!'; } } require_once('curl.php'); //подключаем curl //Создаем объект библиотеки $html = str_get_html($url); //получаем объект // страницы на которые будем заходить foreach ($html->find('div[class=desc] h3 a[href]') as $ssil) { $ssil1[]= $ssil->href; //нашли все клаассы, все разделы с ссылкой заьтем все хрюфы, все занесено в массив $ssil1, ->href - позволяет нам оставить только ссылку (без имени и т д) } $sitemain = 'https://doramatv.live'; // обьявляем основной домен foreach ($ssil1 as &$value) { //скрепляем основной домен и полуссылку $value = $sitemain.$value; unset($value); } //print_r($ssil1); $ssil12=$ssil1; //print_r($ssil12); include_once('prs4/prs4.php'); /* for($i=0;$i<count($ssil12);$i++){ $https= $ssil12[$i]; perebor($https); }*/ foreach ($ssil12 as $https) { //print_r ($https); perebor ($https); } ?> прокси еще не сделал туда не смотрите
PHP: // тут добавляем print_r($ssil12); foreach ($ssil12 as $https) { echo $https; //perebor ($https); } и какой результат?
Сделал перебор ассоциативного массива: PHP: foreach ($ssil12 as $key => $val){ echo '<br/><br/>'.$val.'<br/><br/>'; //perebor ($val); } echo тут печатает все ссылки, все ок, но когда подключаю функцию печатает одну ссылку
1. я специально закоментил вашу функцию, без нее должно нормально все работать 2. еще раз говорю - почитайте про видимость переменных и функций, внутри функции перебор неизвестна ваша другая функция. Передвайте экземпляр этого объекта через параметры итд кароче дело не в цикле