str_contains

(PHP 8)

str_containsDetermine if a string contains a given substring

说明

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

Performs a case-sensitive check indicating if needle is contained in haystack.

参数

haystack

The string to search in.

needle

The substring to search for in the haystack.

返回值

Returns true if needle is in haystack, false otherwise.

范例

Example #1 Using the empty string ''

<?php
if (str_contains('abc''')) {
    echo 
"Checking the existence of the empty string will always return true";
}
?>

以上例程会输出:

Checking the existence of the empty string will always return true

Example #2 Showing case-sensitivity

<?php
$string 
'The lazy fox jumped over the fence';

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 string 'lazy' was found in the string
"Lazy" was not found because the case does not match

注释

Note: 此函数可安全用于二进制对象。

参见

  • 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() - 查找字符串首次出现的位置(不区分大小写)
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
  • strstr() - 查找字符串的首次出现
  • strpbrk() - 在字符串中查找一组字符的任何一个字符
  • substr() - 返回字符串的子串
  • preg_match() - 执行匹配正则表达式

User Contributed Notes

scm6079 02-Apr-2021 02:11
For earlier versions of PHP, you can polyfill the str_contains function using the following snippet:

<?php
// 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;
    }
}
?>
olivertasche+nospam at gmail dot com 23-Mar-2021 05:03
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
kadenskinner at gmail dot com 08-Mar-2021 02:47
<?php

$needle
= '@';
$haystack = '[email protected]';

if (!
str_contains($haystack, $needle)){
echo
'There is not an @ in haystack';
}else{
echo
'There is an @ in haystack';
}
me at daz dot co dot uk 30-Jan-2021 01:26
# Watch out for aberrant partial matches

$string = 'The lazy fox jumped over the fence';

if (str_contains($string, 'ox')) {
    echo 'The string "ox" was found in the string because it was a partial match';
} else {
    echo '"ox" was not found';
}
//output: The string "ox" was found in the string because it was a partial match

# use spaces for full word matching

$string = 'The lazy fox jumped over the fence';

if (str_contains($string, ' ox ')) {
    echo 'The string " ox " was found in the string because it was a partial match';
} else {
    echo '" ox " was not found';
}
//output:  " ox " was not found