1

最大 100 個の URL の有効性をチェックすることを目標とするスクリプトを作成しています (No 404)。

URL の唯一の変数は、次のようにページ番号です。

http://example.com/category/id/products/page/1
http://example.com/category/id/products/page/2

など、100 まで、

コードが無効な URL に到達したらすぐに停止して、到達した番号をエコーするようにします。これは、役に立たないようにしようとしているコードです。

$url ="http://example.com/category/id/products/page/1";

if (false !== strpos($url, $id)) {

    $pageNumber = 2;
    $check = true;

do{

    $urlIterate = "http://example.com/category/id/products/page/".$pageNumber;

    if(false !== strpos($urlIterate, $id)){

        $pageNumber++;

    }

    else{

        $check = false;

    }

}

while($pageNumber <= 99);

}

else{

    $check = false;
    echo 'No pages were found at all';

}

echo "There were ". $pageNumber." pages.;

?>
4

2 に答える 2

1

これがあなたが探しているものかどうかはわかりませんが、これを試してください:

<?php

    $id_to_search = "90";

    for ($i = 1; $i <= 100; $i++) {
        $url = "http://example.com/category/id/products/page/" . $i;
        $values = parse_url($url);
        $paths = explode('/', $values['path']);
        $id_from_url = $paths[5];
        if ($id_to_search === $id_from_url) {
            $headers = get_headers($url);
            if ($headers[0] == 'HTTP/1.0 404 Not Found') {
                echo "URL Found! URL is invalid(404). URLs searched = " . $i . "<br>";
            } else {
                echo "URL is valid<br>";
            }
        } else {
            echo "URL was searched but it does not match the ID we are looking for<br>";
        }
    }
于 2014-10-23T13:25:35.920 に答える
0

なぜforループを使わないのですか?必要な反復回数がわかっているうちは、より良くなります。

for($i = 1; $1<=100; $i++){
    $urlIterate = "http://example.com/category/id/products/page/".$i; //generate url
    $headers = get_headers($urlIterate, 1); //get headers
    if($headers[0] != 'HTTP/1.1 200 OK'){ //if we have an error
        if($i > 1) //if there was at least one found
            echo 'Last found number is ' . ($i-1);
        else
            echo 'No pages were found at all';
        break; //stops the 'for' loop
    }
}

$idあなたのコードはURLで探しています - ポイントは何ですか?

于 2014-10-23T12:56:39.353 に答える