Quiero validar un URI (no solo una URL) en PHP, aunque no pude encontrar ninguna forma de hacerlo.
PHP tiene parse_url() pero no es para URI , sería útil encontrar una forma adecuada de validar estructuras de URI como las siguientes:
content://com.example.provider/articles/?optional=queriesPara validar URI, puede usar el filtro FILTER_VALIDATE_URL con la función filter_var() en PHP.
$uri = "content://com.example.provider/articles/?optional=queries" if (filter_var($uri, FILTER_VALIDATE_URL)) { // Valid URI, do something here. }Puedes probar el siguiente código:
$url = "http://www.google.com"; if (!filter_var($url, FILTER_VALIDATE_URL) === false) { echo("$url is a valid URL"); } else { echo("$url is not a valid URL"); }Necesita filtrar también para eliminar caracteres ilegales.
$url = "http://www.google.com"; // Remove all illegal characters from a url $url = filter_var($url, FILTER_SANITIZE_URL); // Validate url if (filter_var($url, FILTER_VALIDATE_URL)) { echo("$url is a valid URL"); } else { echo("$url is not a valid URL"); }Aquí, se requiere que la URL tenga una cadena de consulta para que sea válida:
$url = "https://www.w3schools.com";
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)) { echo("$url is a valid URL"); } else { echo("$url is not a valid URL"); }