递归网络 Link 在 PHP 中搜索

Recursive Web Link Search in PHP

我正在尝试使用 PHP 进行递归网络 link 搜索,但代码似乎不起作用。我收到超时错误。

function linksearch($url)
{
    $text = file_get_contents($url);
    if (!empty($text))
    {
        $res1 = preg_match_all("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",
        $text,
        $matches);
        if ($res1)
        {
           foreach(array_unique($matches[0]) as $link)
           {
              linksearch($url);
           }
        }
        else 
        {
            // echo "No links found.";
        }
     }
}

你的函数中有一个永无止境的循环,因为你在函数内部再次调用了你的函数。

 linksearch($url);

您需要一个条件来终止您的函数。这不是没有递归,因为在每次迭代中,输入都会改变并结束,直到出现某种情况。现在它一直都是一样的 - $url。

为什么不先将页面保存在本地,然后调整脚本以获取本地测试文件,而不必每次都 运行 进行远程调用。您不会从 file_get_contents() 之后的评估代码中得到超时错误,除非 HTML 文件非常大。