2024年PHP日本大会

str_ends_with

(PHP 8)

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

描述

str_ends_with(字符串 $haystack, 字符串 $needle): 布尔值

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

参数

haystack

要搜索的字符串。

needle

haystack中搜索的子字符串。

返回值

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

示例

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

<?php
if (str_ends_with('abc', '')) {
echo
"所有字符串都以空字符串结尾";
}
?>

以上示例将输出

All strings end with the empty string

示例 #2 显示大小写敏感性

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

if (
str_ends_with($string, 'fence')) {
echo
"字符串以'fence'结尾\n";
}

if (
str_ends_with($string, 'Fence')) {
echo
'字符串以"Fence"结尾';
} else {
echo
'"Fence"未找到,因为大小写不匹配';
}

?>

以上示例将输出

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条注释

javalc6 at gmail dot com
1年前
如果您使用的是旧版本的PHP,您可以定义并使用以下函数

function endsWith($haystack, $needle) {
$length = strlen($needle);
return $length > 0 ? substr($haystack, -$length) === $needle : true;
}
Reinder
1年前
在PHP7中,您可能想要使用

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

据我所知,这是二进制安全的,不需要额外的检查。
divinity76 at gmail dot com
3年前
这是我能想到的最快PHP7实现,它应该比javalc6和Reinder的实现更快,因为这个实现不会创建新的字符串(但他们的会)。

<?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