Cómo detectar 404 al usar file_get_contents

  • Autor Autor iniciopublic
  • Fecha de inicio Fecha de inicio
iniciopublic

iniciopublic

Préstamo
Ómicron
Verificación en dos pasos activada
Verificado por Whatsapp
¿Cómo puedo procesar un código de respuesta 404 en esta situación ... es posible? ,si la página buscada (url) no se encuentra y me da un error 404...
este es el código que estoy usando
PHP:
<?php
for($pagina=50;$pagina<60;$pagina++){

$data = file_get_contents("https://sitioweb.com/?p=".$pagina);

 if ( preg_match('|<h2 style="text-align: center;">(.*?)</h2>|is' , $data , $cap ) )
{
    
    echo '<b>'.$cap[1] .'</b><br>';
}
}

?>
 
proba usando PHP: get_headers - Manual si entendi tu consulta.
te devuelve el estado de la cabecera de una url, en caso que no exista te devolveria 404.
 
PHP:
 <?php

function get_error404($url) 
{
$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
   return false;
}
else
{
return true;
}
curl_close($handle);
}

for($pagina=50;$pagina<60;$pagina++){

$url_pagina="https://sitioweb.com/?p=".$pagina;

if (get_error404($url_pagina))
{

$data = @file_get_contents($url_pagina);

 if ( preg_match('|<h2 style="text-align: center;">(.*?)</h2>|is' , $data , $cap ) )
{
    
    echo '<b>'.$cap[1] .'</b><br>';
}
}
}
?>
 
PHP:
function get_http_response_code($url) {
    $headers = get_headers($url);
    return substr($headers[0], 9, 3);
}
if(get_http_response_code('http://somenotrealurl.com/notrealpage') != "200"){
    echo "error";
}else{
    file_get_contents('http://somenotrealurl.com/notrealpage');
}
 
Atrás
Arriba