PHP 8.4.1 Released!

str_ends_with

(PHP 8)

str_ends_with检查字符串是否以指定子串结尾

说明

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

执行大小写区分的检查,表明 haystack 是否以 needle 结尾。

参数

haystack

在其中搜索的字符串。

needle

要在 haystack 中搜索的子串。

返回值

如果 haystackneedle 结尾,返回 true,否则返回 false

示例

示例 #1 使用空字符串 ''

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

以上示例会输出:

All strings end with the empty string

示例 #2 展示大小写区分

<?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';
}

?>

以上示例会输出:

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

注释

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

参见

  • str_contains() - 确定字符串是否包含指定子串
  • str_starts_with() - 检查字符串是否以指定子串开头
  • stripos() - 查找字符串首次出现的位置(不区分大小写)
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
  • strstr() - 查找字符串的首次出现
  • strpbrk() - 在字符串中查找一组字符的任何一个字符
  • substr() - 返回字符串的子串
  • preg_match() - 执行匹配正则表达式

添加备注

用户贡献的备注 3 notes

up
9
javalc6 at gmail dot com
1 year ago
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;
}
up
8
Reinder
1 year 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
6
divinity76 at gmail dot com
3 years 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));
}
}
?>
To Top