Нужна помощь в понимании того, как зациклить функцию - PullRequest
0 голосов
/ 28 февраля 2012

Я создаю функцию, которая передает URL-адрес и получает содержимое страницы. Если эта страница содержит «Далее>», я хотел бы получить URL-адрес этого и перейти к следующей странице под страницей больше не содержит далее.

Как бы это было сделано? цикл в то время как?

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

Понял? Как это можно сделать?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Вы можете использовать рекурсивность для полного поиска ссылки:

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 -> ... -> не будет мешатьс вашим поиском;)

0 голосов
/ 28 февраля 2012

Скорее всего, что-то вроде этого:

<?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 для всего, что вы хотите с этим сделать.

...