2012-02-28 86 views
0

我正在創建一個將URL傳遞並獲取頁面內容的函數。如果此頁面包含「下一步>」,我想抓取該網址並繼續進入下一頁下的頁面,該頁面不再包含下一頁。需要幫助瞭解如何循環功能

這將如何完成?一個while循環?

check_url("http://site.com"); 
-> url contains 'next', href is http://site.com/ggkdoe 

-> does http://site.com/ggkdoe contain next? if so, hit it again and check if that contains 'next' then get that url etc etc 

明白嗎?如何才能做到這一點?

預先感謝您

+1

到目前爲止嘗試過什麼? – 2012-02-28 09:00:09

+0

通常,「下一步」按鈕由服務器端生成,不解析客戶端輸出。 – Raptor 2012-02-28 09:00:57

+0

[強大的,成熟的HTML解析器的PHP]的可能重複(http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php) – CodeCaster 2012-02-28 09:01:00

回答

0

最有可能是這樣的:

<?php 
$checkNext = false; 
$currentURL = "http://site.com"; 
do { 
    $check = check_url($currentURL); 
    if ($check !== null) { 
     $currentURL = $check; 
     $checkNext = true; 
    } else { 
     $checkNext = false; 
    } 
} while ($checkNext); 

而且我認爲check_url()將返回一個URL,如果能找到和null否則。 do - while -loop確保至少對初始URL執行一次檢查,然後再次檢查,只要check_url()可以找到另一個URL。最後使用$currentURL爲你想做的任何事情。

0

你可以使用遞歸性的完整鏈接的搜索:

function checkUrl($url) { 
    $atLeastOneUrl = true; 
    // Check your content 
    // Log some data about current Url 
    foreach ($urlFound in $urlsFound){ 
     check_url($urlFound); 
     $atLeastOneUrl=true; 
    } 

return $atLeastOneUrl; 
} 

但你會想看看這個鏈接1 - >連接2 - > - >鏈接1週期不會與地干擾您的搜索;)