Validación PHP/regex para URL

Resuelto AndreLiem asked hace 54 años • 21 respuestas

He estado buscando una expresión regular simple para las URL. ¿Alguien tiene alguna a mano que funcione bien? No encontré uno con las clases de validación de Zend Framework y he visto varias implementaciones.

AndreLiem avatar Jan 01 '70 08:01 AndreLiem
Aceptado

Utilice la filter_var()función para validar si una cadena es URL o no:

var_dump(filter_var('example.com', FILTER_VALIDATE_URL));

Es una mala práctica utilizar expresiones regulares cuando no es necesario.

EDITAR : Tenga cuidado, esta solución no es segura para Unicode ni para XSS. Si necesita una validación compleja, tal vez sea mejor buscar en otro lado.

Stanislav avatar Oct 16 '2008 06:10 Stanislav

Utilicé esto en algunos proyectos, no creo haber tenido problemas, pero estoy seguro de que no es exhaustivo:

$text = preg_replace(
  '#((https?|ftp)://(\S*?\.\S*?))([\s)\[\]{},;"\':<]|\.\s|$)#i',
  "'<a href=\"$1\" target=\"_blank\">$3</a>$4'",
  $text
);

La mayor parte de la basura aleatoria al final es para tratar situaciones como http://domain.example.en una oración (para evitar coincidir con el punto final). Estoy seguro de que se podría limpiar, pero ya funcionó. Más o menos lo he copiado de un proyecto a otro.

Owen avatar Oct 15 '2008 19:10 Owen