In case you are using an older version of PHP, you can define and use the following function:
function endsWith($haystack, $needle) {
$length = strlen($needle);
return $length > 0 ? substr($haystack, -$length) === $needle : true;
}
(PHP 8)
str_ends_with — Проверяет, заканчивается ли строка подстрокой
Функция выполняет регистрозависимую проверку, которая указывает,
заканчивается ли строка haystack
подстрокой needle
.
haystack
Строка, в которой требуется найти подстроку.
needle
Подстрока, которую требуется найти в строке haystack
.
Функция возвращает true
, если строка haystack
заканчивается подстрокой
needle
, иначе возвращает false
.
Пример #1 Пример поиска пустой подстроки ''
в конце строки
<?php
if (str_ends_with('абв', '')) {
echo "Каждая PHP-строка заканчивается пустой подстрокой";
}
?>
Результат выполнения приведённого примера:
Каждая PHP-строка заканчивается пустой подстрокой
Пример #2 Демонстрация чувствительности к регистру
<?php
$string = 'Ленивая лиса перепрыгнула через забор';
if (str_ends_with($string, 'забор')) {
echo "Строка заканчивается подстрокой 'забор'\n";
}
if (str_ends_with($string, 'Забор')) {
echo 'Строка заканчивается подстрокой "Забор"';
} else {
echo 'Функция не нашла подстроку "Забор", потому что регистр не совпадает';
}
?>
Результат выполнения приведённого примера:
Строка заканчивается подстрокой 'забор' Функция не нашла подстроку "Забор", потому что регистр не совпадает
Замечание: Функция безопасна для обработки данных в двоичной форме.
In case you are using an older version of PHP, you can define and use the following function:
function endsWith($haystack, $needle) {
$length = strlen($needle);
return $length > 0 ? substr($haystack, -$length) === $needle : true;
}
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.
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));
}
}
?>