Validar una URL es muy sencillo, comenzamos creando el script PHP en el creamos una función a la que nombramos “filtroUrl()” y le pasamos un valor
Creamos un “if”, condición en la que filtramos los espacios en blanco con “trim” y si es igual a “cadena vacia”, hacemos un “return false” y la función devolverá FALSE
A continuación creamos un “else” y un “if”, condición en la que filtramos si el valor recibido con FILTER_VALIDATE_URL, para ello usamos la función “filter_var”, que filtra una variable con el filtro especificado, hacemos uso del operador “!” para comprobar si es diferente, si este devuelve FALSE, hacemos un “return false” y la función devolverá FALSE.

<?php
	function filtroUrl($valor){
	if(trim($valor) == ''){
	return false;
	}else{
	if (!filter_var($valor, FILTER_VALIDATE_URL)) {
	return false;
?>

Creamos un “else” en el que vamos a incluir un “if” y una expresión regular que identifique un orden correcto de caracteres para una URL, por lo que en este caso, la condición a cumplir seria si la condición es diferente de la expresión regular, asi que usaremos el operador “!” en “preg_match” o lo que es lo mismo “!preg_match”, le pasamos el valor y hacemos un “return false”, la función devolverá FALSE.

}else{
	if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|](\.)[a-z]{2}/i",$valor)) {
	return false;
}

Por ultimo, creamos en “else” y devolvemos TRUE.

}else{
return true;
}

A continuación y sin cerrar el script escribimos el siguiente código:

if (!filtroUrl($valor)) {
	echo 'URL incorrecta';
}else {
	echo 'URL correcta';
}

Guardamos el archivo como “funcion_validar_url.php”

A continuación creamos el archivo “index.php” en el que insertamos un formulario que enviará por POST los valores al archivo “funcion_validar_url.php”.

index.php

<!DOCTYPE HTML>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Didesweb, proteger el correo de los spambots</title>
	<!-- Didesweb -->  
	<!-- Diseño y desarrollo web -->  
	<!-- https://didesweb.com/-->  
	<!-- Este obra está protegida bajo licencia Creative Commons Attribution --> 
</head>
<body>
	<h1>© Didesweb, proteger el correo de los spambots</h1>
	<form action="funcion_validar_url.php" method="POST"> 
	<input type="text" name="variable_input"/>
	<input type="submit" value="enviar"/>
	</form>
</body>
</html>

Y completamos el archivo funcion_validar_url.php con unas advertencias

funcion_validar_url.php

<?php	
	$valor = $_POST['variable_input'];
	function filtroUrl($valor){
		if(trim($valor) == ''){
			echo 'No has introducido ningun valor<br>';
			return false;
		}else{
			if (!filter_var($valor, FILTER_VALIDATE_URL)) {
				echo 'La direccion introducida no es valida<br>';
				return false;
			}
			if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|](\.)[a-z]{2}/i",$valor)) {
				echo 'La direccion introducida no es valida<br>';
				return false;
			}else{
				echo 'Direccion valida<br>';
				return true;
			}
		}
	}
	if (!filtroUrl($valor)) {	
		echo 'URL incorrecta';
	}else {
		echo 'La URL '.$valor.' es correcta';
	}		
?>

Puedes ver y descargar el código de este archivo en mi cuenta de GitHub.

Valoraciones


3 valoraciones

  • PHPepo 19 junio, 2019

    Hola Amigo,

    Buen articulo, soy el mismo de hace un momento. Probando la expresión regular (la cual esta copiada en otros articulos),
    He podido comprobar, que da un pequeño fallo, si pones un dominio sin extension alguna, sigue devolviendo true.

    He añadido una pequeña "coletilla" para completarla del todo, solo añadir esto al final antes del /i

    (\.)[a-z]{2}

    Te paso la regex completa para que la puedas actualizar sin problemas! ,

    !preg_match("/\b(?:(?:https?|ftp|http):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|](\.)[a-z]{2}/i",$url)

    Un saludo Bro!

    1. Roque Arnás 27 junio, 2019

      Actualizado
      Gracias PHPepo

  • PHPepo 19 junio, 2019

    Muy buena explicacion !! 😉

Tu valoración


* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

Utilizamos cookies propias y de terceros para personalizar el contenido y los anuncios, ofrecer funciones de medios sociales y analizar el tráfico. Además compartimos información sobre el uso que haces de nuestra web con nuestros partners de medios sociales, de publicidad y de análisis web. Si continúas navegando estás dando tu consentimiento para la aceptación de nuestra Política de cookies.

ACEPTAR
Aviso de cookies