我想在PHP中纠正我的递归函数

时间:2017-10-14 08:54:08

标签: php pdf recursion file-get-contents

我有一个递归函数 首先,将一个页面URL数组传递给此函数 然后为每个链接找到这些页面中的链接,如果那些是pdf链接然后保存到$ li数组,如果没有则保存到$ next数组。

实际上,在某些页面中,相同的链接重复。 所以每次我想传递$ next数组只有新链接。但现在$ next数组存储所有链接并且循环没有结束。请帮助 这是我的代码

<?php

global $next;
$next == array();
global $counter;
$counter = 2;
global $p;

$ next是从页面获取的页面链接数组     next_iter = get_html1($ next);

function get_html1($next){
   global $li;
   global $all_links;
   global $p;
   $p++;
   echo "count is" . $p . '<br>';
   error_reporting(E_ERROR | E_PARSE);
   global $URL;
   global $counter;
   $next = array_unique($next);
   print_r($next);

       foreach ($next as $nw) {
           $page = '';
             if ((strpos($nw, $URL) !== false ) && (strpos($nw, 'http://') !== false || strpos($nw, 'https://') !== false)) {
            $page = $nw;
            $html1 = file_get_html($page);

        } else if (strpos($nw, $URL) === false && strpos($nw, 'http://') === false && strpos($nw, 'https://') === false) {
            $page = $URL . $nw;

            $html1 = file_get_html($page);
        }

        if ($html1 !== false) {
            foreach ($html1->find('a') as $links) {

                if (!in_array($links->href, $all_links)) {
                    if ($links->href != '#' && $links->href != NULL && $links->href != '/' && strpos($links->href, 'javascript') === false) {

                        $a = strip_tags($links->plaintext);
                        $a = preg_replace("/\s|&nbsp;/", '', $a);
                        $a = trim($a);

                        if ((preg_match('/.*\.pdf$/i', $links->href)) || (strcmp($a, 'Download') == 0) || stripos($a, 'Download') !== false) {
                            //  echo $links->href;

                            if ((strpos($links->href, 'http://') !== false || strpos($links->href, 'https://') !== false)) {

                                $lm = $links->href;


                                if (!in_array($lm, $li)) {
                                    write_to_folder($lm);
                                    $li[] = $lm;
                                }

                                $li[] = $links->href;
                            } else if ((strpos($links->href, 'http://') === false && strpos($links->href, 'https://') === false)) {
                                // echo $URL . $links->href . '<br>';

                                $lm = $URL . $links->href;

                                if (!in_array($lm, $li)) {
                                    write_to_folder($lm);
                                    $li[] = $lm;
                                }
                            }
                        } else {
                            if (strpos($links->href, 'mailto:') === false && strpos($links->href, 'tel:') === false && strpos($links->href, '.zip') === false) {

                                if (!in_array($links->href, $next1)) {
                                    $next[] = $links->href;
                                }
                            }
                        }
                    }
                }
            }
        }
    }



    $next = array_unique($next);

    echo "<br>next array";

    if (!empty($next)) {

        if ($p <= $counter) {

            $recursiv = get_html1($next);
        } else {
            echo "SUCCESSFULLY EXECUTED";
            exit;
        }
    } else {
        echo "SUCCESSFULLY EXECUTED";
        exit;
    }
}

?>

0 个答案:

没有答案