martes, 7 de julio de 2015

Comprobar si una url existe con PHP



Esto me ha servido mucho y gracias a la gente de http://wordpresstutoriales.com/  por su publicación que les comparto.

A veces nos encontramos con la necesidad de testear si una url existe y esta disponible antes de proceder a otras acciones con PHP, hay varios modos de hacerlo una es con PHP y Curl y otra usando la funcion get_headers(), aunque hay otras maneras. A continuación podeis ver varios ejemplos de codigo:

PHP + CURL:

<?php
$url = 'http://wordpresstutoriales.com/';
    function url_exists($url) {
        $ch = @curl_init($url);
        @curl_setopt($ch, CURLOPT_HEADER, TRUE);
        @curl_setopt($ch, CURLOPT_NOBODY, TRUE);
        @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
        @curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $status = array();
        preg_match('/HTTP\/.* ([0-9]+) .*/', @curl_exec($ch) , $status);
        return ($status[1] == 200);
    }
echo url_exists($url)? 'existe' : 'no existe';
?>

USANDO get_headers()

<?php
$url = 'http://wordpresstutoriales.com/';
function url_exists($url) {
    $h = get_headers($url);
    $status = array();
    preg_match('/HTTP\/.* ([0-9]+) .*/', $h[0] , $status);
    return ($status[1] == 200);
}
echo url_exists($url)? 'existe' : 'no existe';
?>

USANDO file_exists()

<?php
$nombre_fichero = 'http://wordpresstutoriales.com/index.php';
if (file_exists($nombre_fichero)) {
    echo "El fichero $nombre_fichero existe";
} else {
    echo "El fichero $nombre_fichero no existe";
}
?>

Otro método alternativo

<?php
$url = 'http://wordpresstutoriales.com/';
function isURL($url){
    $pattern='|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i';
    if(preg_match($pattern, $url) > 0) return true;
    else return false;
}
?>

Y para terminar aqui teneis esta función con fopen()

<?php
function url_existe($url)
{
   $handle = @fopen($url, "r");
   if ($handle == false)
          return false;
   fclose($handle);
      return true;
}
?>

La usaríamos de este modo:

<?php
$url = "http://wordpresstutoriales.com/index.php";

if (url_existe($url))
{
   echo "La URL existe";
}
else
{
   echo "La URL no existe"
}
?>



Para comprobar varias url podemos usar:

<?php

$url1=url("http://seeuseo.com");
$url2=url("http://webeixon.com");
if($url1){
echo "Se puede usar la url1";
}else{
if($url2){
echo "No se puede usar la url1, pero si la url2";
}else{
echo "No se ha podido usar ninguna de las url";
}
}
function url($url){
$fp=@fopen($url,"r");
if($fp){
return true;
}else{
return false;
}
@fclose($fp);
}
?>


Si te ha servido de ayuda porfavor valora este post. Gracias!

URL:http://wordpresstutoriales.com/comprobar-si-una-url-existe-con-php/

¿Qué te parece este blog?

Vídeos subidos