Как посчитать количество страниц, содержащихся в URL через идентификатор?

Я создаю скрипт, цель которого — проверить до 100 URL-адресов на валидность (№ 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.;

?>

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>";
}
}
1

Другие решения

Почему вы не используете 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 — какой смысл?

0

По вопросам рекламы [email protected]