PHP 8.0.24 Released!

str_ends_with

(PHP 8)

str_ends_withChecks if a string ends with a given substring

Descrição

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

Performs a case-sensitive check indicating if haystack ends with needle.

Parâmetros

haystack

The string to search in.

needle

The substring to search for in the haystack.

Valor Retornado

Returns true if haystack ends with needle, false otherwise.

Exemplos

Exemplo #1 Using the empty string ''

<?php
if (str_ends_with('abc''')) {
    echo 
"All strings end with the empty string";
}
?>

O exemplo acima irá imprimir:

All strings end with the empty string

Exemplo #2 Showing case-sensitivity

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

if (
str_ends_with($string'fence')) {
    echo 
"The string ends with 'fence'\n";
}

if (
str_ends_with($string'Fence')) {
    echo 
'The string ends with "fence"';
} else {
    echo 
'"fence" was not found because the case does not match';
}

?>

O exemplo acima irá imprimir:

The string ends with 'fence'
"fence" was not found because the case does not match

Notas

Nota: Esta função é binary-safe.

Veja Também

  • str_contains() - Determine if a string contains a given substring
  • str_starts_with() - Checks if a string starts with a given substring
  • stripos() - Encontra a primeira ocorrencia de uma string sem diferenciar maiúsculas e minúsculas
  • strrpos() - Encontra a posição da última ocorrência de um caractere em uma string
  • strripos() - Encontra a posição da última ocorrência de uma string case-insensitive em uma string
  • strstr() - Encontra a primeira ocorrencia de uma string
  • strpbrk() - Procura na string por um dos caracteres de um conjunto
  • substr() - Retorna uma parte de uma string
  • preg_match() - Perform a regular expression match

add a note

User Contributed Notes 5 notes

up
28
javalc6 at gmail dot com
1 year ago
In case you are using an older version of PHP (e.g. PHP 7), you can define and use the following function:

function endsWith($haystack, $needle) {
    $length = strlen($needle);
    return $length > 0 ? substr($haystack, -$length) === $needle : true;
}
up
3
divinity76 at gmail dot com
11 months ago
this is the fastest php7-implementation i can think of, it should be faster than javalc6 and Reinder's implementations, as this one doesn't create new strings (but theirs does)

<?php
if (! function_exists('str_ends_with')) {
    function
str_ends_with(string $haystack, string $needle): bool
   
{
       
$needle_len = strlen($needle);
        return (
$needle_len === 0 || 0 === substr_compare($haystack, $needle, - $needle_len));
    }
}
?>
up
1
Reinder
11 months ago
In PHP7 you may want to use:

if (!function_exists('str_ends_with')) {
  function str_ends_with($str, $end) {
    return (@substr_compare($str, $end, -strlen($end))==0);
  }
}

AFAIK that is binary safe and doesn't need additional checks.
up
1
billynoah at gmail dot com
9 days ago
Case-insensitive version:

<?php
function stri_ends_with($haystack, $needle) {
    return
strripos($haystack, $needle) === (strlen($haystack) - strlen($needle));
}
?>
up
0
kitchin at lapage dot com
8 months ago
Wordpress 5.9 RC3 does it this way:

<?php
if ( ! function_exists( 'str_ends_with' ) ) {
    function
str_ends_with( $haystack, $needle ) {
        if (
'' === $haystack && '' !== $needle ) {
            return
false;
        }
       
$len = strlen( $needle );
        return
0 === substr_compare( $haystack, $needle, -$len, $len );
    }
}
?>

I suppose the compiler optimizes for the fact that `substr_compare()` is only being used for equality, not comparison ( <0, >0 ).
To Top