PHP check if URL contains a certain string

Posted on Sep 26, 2022

Learn how you can check if a URL address contains a certain string in PHP

Photo from Unsplash

To check if a URL address contains a certain string in PHP, you need to use the strpos() or str_contains() function.

When you need to perform an exact match, you need to use a regex with preg_match() function.

Let’s see how to do both in this tutorial.

Check if URL contains a string in PHP

The strpos() function helps you check the position of a string portion in a string.

The function returns an int indicating the position of the string, or false when the string is not found:

strpos(
    string $haystack,
    string $needle,
    int $offset = 0
): int|false

To check if a certains string exists in a URL address, call the strpos() as shown below:

$url = "https://sebhastian.com/php";

if (strpos($url, "php")) {
    print "php is found in the url";
} else {
    print "php is NOT found in the url";
}

In PHP v8, you can also use the str_contains() function, which checks whether a string contains a certain string.

It doesn’t return the position of the string like strpos(), only true if it contains the string or false otherwise:

str_contains(
    string $haystack,
    string $needle
): bool

You call the str_contains() like the strpos() functions:

$url = "https://sebhastian.com/php";

if (str_contains($url, "php")) {
    print "php is found in the url";
} else {
    print "php is NOT found in the url";
}

Both str_contains() and strpos() will match a URL that has the $needle anywhere.

For example, php, php-study, and phpstudy are considered valid.

If you want only an exact match, you need another way.

Check if URL contains an exact string in PHP

To check if a URL contains an exact string, you need to call the preg_match() function.

This function allows you to perform a regex match to your string.

You need to use the \b word boundary expression in the function as follows:

$url = "https://sebhastian.com/php";
$str = "php";

if (preg_match("~\b$str\b~", $url)) {
    print "php is found in the url";
} else {
    print "php is NOT found in the url";
}

With the above preg_match() function, php and php-study returns true while phpstudy will return false.

And that’s how you check if URL contains a certain string in PHP.

Level up your programming skills

I'm sending out an occasional email with the latest programming tutorials. Drop your email in the box below and I'll send new stuff straight into your inbox!

No spam. Unsubscribe anytime.