PHP 8.1.0 Released!

str_contains

(PHP 8)

str_containsDetermine if a string contains a given substring

Descripción

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

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

Parámetros

haystack

The string to search in.

needle

The substring to search for in the haystack.

Valores devueltos

Returns true if needle is in haystack, false otherwise.

Ejemplos

Ejemplo #1 Using the empty string ''

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

El resultado del ejemplo sería:

Checking the existence of the empty string will always return true

Ejemplo #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';
}

?>

El resultado del ejemplo sería:

The string 'lazy' was found in the string
"Lazy" was not found because the case does not match

Notas

Nota: Esta función es segura binariamente.

Ver también

  • 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() - Encuentra la posición de la primera aparición de un substring en un string sin considerar mayúsculas ni minúsculas
  • strrpos() - Encuentra la posición de la última aparición de un substring en un string
  • strripos() - Encuentra la posición de la última aparición de un substring insensible a mayúsculas y minúsculas en un string
  • strstr() - Encuentra la primera aparición de un string
  • strpbrk() - Buscar una cadena por cualquiera de los elementos de un conjunto de caracteres
  • substr() - Devuelve parte de una cadena
  • preg_match() - Realiza una comparación con una expresión regular

add a note add a note

User Contributed Notes 6 notes

up
37
scm6079
7 months ago
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;
    }
}
?>
up
2
olivertasche+nospam at gmail dot com
8 months ago
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
up
1
AuxData
9 days ago
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
up
0
juliyvchirkov at gmail dot com
4 months ago
<?php

// 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;
    }
}
up
-21
kadenskinner at gmail dot com
8 months ago
<?php

$needle
= '@';
$haystack = 'user@example.com';

if (!
str_contains($haystack, $needle)){
echo
'There is not an @ in haystack';
}else{
echo
'There is an @ in haystack';
}
up
-48
me at daz dot co dot uk
10 months ago
# 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
To Top