- str_contains
- Parameters
- Return Values
- Examples
- Notes
- See Also
- User Contributed Notes 7 notes
- PHP check if URL contains a certain string
- Check if URL contains a string in PHP
- Check if URL contains an exact string in PHP
- Take your skills to the next level ⚡️
- About
- Search
- Tags
- Check if URL contains different strings
str_contains
Performs a case-sensitive check indicating if needle is contained in haystack .
Parameters
The substring to search for in the haystack .
Return Values
Returns true if needle is in haystack , false otherwise.
Examples
Example #1 Using the empty string »
if ( str_contains ( ‘abc’ , » )) echo «Checking the existence of the empty string will always return true» ;
>
?>?php
The above example will output:
Checking the existence of the empty string will always return true
Example #2 Showing case-sensitivity
$string = ‘The lazy fox jumped over the fence’ ;
?php
if ( str_contains ( $string , ‘lazy’ )) echo «The string ‘lazy’ was found in the string\n» ;
>
if ( str_contains ( $string , ‘Lazy’ )) echo ‘The string «Lazy» was found in the string’ ;
> else echo ‘»Lazy» was not found because the case does not match’ ;
>
The above example will output:
The string 'lazy' was found in the string "Lazy" was not found because the case does not match
Notes
Note: This function is binary-safe.
See Also
- str_ends_with() — Checks if a string ends with a given substring
- str_starts_with() — Checks if a string starts with a given substring
- stripos() — Find the position of the first occurrence of a case-insensitive substring in a string
- strrpos() — Find the position of the last occurrence of a substring in a string
- strripos() — Find the position of the last occurrence of a case-insensitive substring in a string
- strstr() — Find the first occurrence of a string
- strpbrk() — Search a string for any of a set of characters
- substr() — Return part of a string
- preg_match() — Perform a regular expression match
User Contributed Notes 7 notes
For earlier versions of PHP, you can polyfill the str_contains function using the following snippet:
// based on original work from the PHP Laravel framework
if (! function_exists ( ‘str_contains’ )) function str_contains ( $haystack , $needle ) return $needle !== » && mb_strpos ( $haystack , $needle ) !== false ;
>
>
?>
The polyfill that based on original work from the PHP Laravel framework had a different behavior;
when the $needle is `»»` or `null`:
php8’s will return `true`;
but, laravel’str_contains will return `false`;
when php8.1, null is deprecated, You can use `$needle ?: «»`;
The code from «me at daz dot co dot uk» will not work if the word is
— at the start of the string
— at the end of the string
— at the end of a sentence (like «the ox.» or «is that an ox?»)
— in quotes
— and so on.
You should explode the string by whitespace, punctations, . and check if the resulting array contains your word OR try to test with a RegEx like this:
(^|[\s\W])+word($|[\s\W])+
Disclaimer: The RegEx may need some tweaks
private function contains(array $needles, string $type, string $haystack = NULL, string $filename = NULL) : bool <
if (empty($needles)) return FALSE;
if ($filename)
$haystack = file_get_contents($filename);
$now_what = function(string $needle) use ($haystack, $type) : array $has_needle = str_contains($haystack, $needle);
if ($type === ‘any’ && $has_needle)
return [‘done’ => TRUE, ‘return’ => TRUE];
foreach ($needles as $needle) $check = $now_what($needle);
if ($check[‘done’])
return $check[‘return’];
>
return TRUE;
>
function containsAny(array $needles, string $haystack = NULL, string $filename = NULL) : bool return self::contains($needles, ‘any’, $haystack, $filename);
>
function containsAll(array $needles, string $haystack = NULL, string $filename = NULL) : bool return self::contains($needles, ‘all’, $haystack, $filename);
>
// Polyfill for PHP 4 — PHP 7, safe to utilize with PHP 8
if (! function_exists ( ‘str_contains’ )) function str_contains ( string $haystack , string $needle )
return empty( $needle ) || strpos ( $haystack , $needle ) !== false ;
>
>
Until PHP 8 was released, many-a-programmer were writing our own contain() functions. Mine also handles needles with logical ORs (set to ‘||’).
Here it is.
function contains($haystack, $needle, $offset) $OR = ‘||’;
$result = false;
$ORpos = strpos($needle, $OR, 0);
if($ORpos !== false) < //ORs exist in the needle string
$needle_arr = explode($OR, $needle);
for($i=0; $i < count($needle_arr); $i++)$pos = strpos($haystack, trim($needle_arr[$i]), $offset);
if($pos !== false) $result = true;
break;
>
>
> else $pos = strpos($haystack, trim($needle), $offset);
if($pos !== false) $result = true;
>
>
return($result);
>
Call: contains(«Apple Orange Banana», «Apple || Walnut», 0);
Returns: true
PHP check if URL contains a certain string
Posted on Sep 26, 2022
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:
To check if a certains string exists in a URL address, call the strpos() as shown below:
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:
You call the str_contains() like the strpos() functions:
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:
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.
Take your skills to the next level ⚡️
I’m sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I’ll send new stuff straight into your inbox!
About
Hello! This website is dedicated to help you learn tech and data science skills with its step-by-step, beginner-friendly tutorials.
Learn statistics, JavaScript and other programming languages using clear examples written for people.
Search
Type the keyword below and hit enter
Tags
Click to see all tutorials tagged with:
Check if URL contains different strings
The code it self is pretty self explanatory, however i do not think it is very efficient at all. Is there a better way to do this? Its basically so i can track spam sites and save the sites into my honeypot db.
//Gambling if (strpos($site, "betting") ||strpos($site, "blackjack") ||strpos($site, "casino") ||strpos($site, "craps") ||strpos($site, "football") ||strpos($site, "gamble") ||strpos($site, "gambling") ||strpos($site, "game") ||strpos($site, "gaming") ||strpos($site, "greyhound") ||strpos($site, "highroller") ||strpos($site, "lottery") ||strpos($site, "lotto") ||strpos($site, "odds") ||strpos($site, "poker") ||strpos($site, "racehorse") ||strpos($site, "racing") ||strpos($site, "roulette") ||strpos($site, "royalflush") ||strpos($site, "slotmachine") ||strpos($site, "slots") ||strpos($site, "slotsmachine") ||strpos($site, "sport") ||strpos($site, "wager") ||strpos($site, "paigow") ||strpos($site, "bingo") ||strpos($site, "baccarat")) < //Insert into gambling $result = mysqli_query($con,"INSERT INTO `rocket_newsites`.`gambling` (`id`, `url`) VALUES (NULL, '$site');"); >//Payday if (strpos($site, "payday") ||strpos($site, "loan") ||strpos($site, "bank") ||strpos($site, "money") ||strpos($site, "wonga") ||strpos($site, "lender") ||strpos($site, "credit") ||strpos($site, "debt") ||strpos($site, "repayment") ||strpos($site, "mortgage")) < //Insert into payday $result = mysqli_query($con,"INSERT INTO `rocket_newsites`.`payday` (`id`, `url`) VALUES (NULL, '$site');"); >//Lawyer if (strpos($site, "law") ||strpos($site, "solicitor") ||strpos($site, "government") ||strpos($site, "injury") ||strpos($site, "personal") ||strpos($site, "accident") ||strpos($site, "advice") ||strpos($site, "traffic")) < //Insert into lawyer $result = mysqli_query($con,"INSERT INTO `rocket_newsites`.`lawyer` (`id`, `url`) VALUES (NULL, '$site');"); >//Weight Loss if (strpos($site, "weight") ||strpos($site, "loss") ||strpos($site, "pills") ||strpos($site, "diet") ||strpos($site, "garcinia") ||strpos($site, "cambogia") ||strpos($site, "acai") ||strpos($site, "berry") ||strpos($site, "raspberry") ||strpos($site, "ketone") ||strpos($site, "coffee") ||strpos($site, "tea") ||strpos($site, "health") ||strpos($site, "lose") ||strpos($site, "surgery") ||strpos($site, "fat") ||strpos($site, "dieting") ||strpos($site, "exercise") ||strpos($site, "workout") ||strpos($site, "gym") ||strpos($site, "hypnosis")) < //Insert into weight loss $result = mysqli_query($con,"INSERT INTO `rocket_newsites`.`weightloss` (`id`, `url`) VALUES (NULL, '$site');"); >//Insurance if (strpos($site, "ppi") ||strpos($site, "insurance") ||strpos($site, "payment") ||strpos($site, "claim") ||strpos($site, "calculator") ||strpos($site, "finance") ||strpos($site, "mis-sold")) < //Insert into insurance $result = mysqli_query($con,"INSERT INTO `rocket_newsites`.`insurance` (`id`, `url`) VALUES (NULL, '$site');"); >mysqli_close($con); exit(); ?>