str_ends_with

(PHP 8)

str_ends_withПроверяет, заканчивается ли строка заданной подстрокой

Описание

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

Выполняет проверку с учётом регистра, указывающую, заканчивается ли haystack подстрокой needle.

Список параметров

haystack

Строка для поиска.

needle

Подстрока для поиска в haystack.

Возвращаемые значения

Возвращает true, если haystack заканчивается подстрокой needle, false в противном случае.

Примеры

Пример #1 Использование пустой строки ''

<?php
if (str_ends_with('абв''')) {
    echo 
"Все строки заканчиваются пустой строкой";
}
?>

Результат выполнения данного примера:

Все строки заканчиваются пустой строкой

Пример #2 Демонстрация чувствительности к регистру

<?php
$string 
'ленивая лиса перепрыгнула через забор';

if (
str_ends_with($string'забор')) {
    echo 
"Строка заканчивается на 'забор'\n";
}

if (
str_ends_with($string'Забор')) {
    echo 
'Строка заканчивается на "забор"';
} else {
    echo 
'"забор" не найден, потому что регистр не соответствует';
}

?>

Результат выполнения данного примера:

Строка заканчивается на 'забор'
"забор" не найден, потому что регистр не соответствует

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • str_contains() - Определяет, содержит ли строка заданную подстроку
  • str_starts_with() - Проверяет, начинается ли строка с заданной подстроки
  • stripos() - Возвращает позицию первого вхождения подстроки без учёта регистра
  • strrpos() - Возвращает позицию последнего вхождения подстроки в строке
  • strripos() - Возвращает позицию последнего вхождения подстроки без учёта регистра
  • strstr() - Находит первое вхождение подстроки
  • strpbrk() - Ищет в строке любой символ из заданного набора
  • substr() - Возвращает подстроку
  • preg_match() - Выполняет проверку на соответствие регулярному выражению

add a note

User Contributed Notes 4 notes

up
25
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
9 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
9 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
0
kitchin at lapage dot com
6 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