How To Validate Url In Php

URL validation is an essential step in web development when you need to accept a URL as user input or process a URL from external sources. In this blog post, we will discuss how to validate a URL using PHP’s built-in functions.

Using filter_var() function

The filter_var() function in PHP provides a convenient way to validate and sanitize data. To validate a URL, you can use the FILTER_VALIDATE_URL filter along with this function.

Here’s a simple example of how to use filter_var() to validate a URL:

$url = "https://www.example.com";

if (filter_var($url, FILTER_VALIDATE_URL)) {
    echo "The URL is valid!";
} else {
    echo "The URL is not valid!";
}

In the above example, the filter_var() function checks if the provided URL is valid. If it is valid, it returns the URL; otherwise, it returns false.

Additional options with filter_var()

The filter_var() function also allows you to specify additional options using the flags parameter. For example, you can require the URL to have a specific scheme like “http” or “https” by using the FILTER_FLAG_SCHEME_REQUIRED flag:

$url = "https://www.example.com";
$options = array(
    "flags" => FILTER_FLAG_SCHEME_REQUIRED
);

if (filter_var($url, FILTER_VALIDATE_URL, $options)) {
    echo "The URL is valid!";
} else {
    echo "The URL is not valid!";
}

In the above example, the validation will fail if the URL does not have a scheme, such as “http” or “https”.

Using preg_match() function

Another approach to validate a URL is by using regular expressions with the preg_match() function. While this method can be more flexible, it’s essential to write a proper regex pattern to avoid false negatives or positives. Here’s an example of how to use preg_match() to validate a URL:

$url = "https://www.example.com";
$pattern = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";

if (preg_match($pattern, $url)) {
    echo "The URL is valid!";
} else {
    echo "The URL is not valid!";
}

In this example, the provided regex pattern checks for common URL schemes (http, https, ftp) followed by a valid domain name and an optional port number. The pattern is case-insensitive as denoted by the /i modifier.

Conclusion

In this blog post, we discussed two methods to validate a URL in PHP: using the filter_var() function with FILTER_VALIDATE_URL filter and using the preg_match() function with a regular expression. The filter_var() function is recommended for most cases, as it is more straightforward and less error-prone. However, you can use the preg_match() function with a custom regex pattern if you need more flexibility in your validation.