如果您使用的是旧版本的PHP,您可以定义并使用以下函数
function endsWith($haystack, $needle) {
$length = strlen($needle);
return $length > 0 ? substr($haystack, -$length) === $needle : true;
}
(PHP 8)
str_ends_with — 检查字符串是否以给定子字符串结尾
haystack
要搜索的字符串。
needle
在haystack
中搜索的子字符串。
示例 #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
注意: 此函数是二进制安全的。
如果您使用的是旧版本的PHP,您可以定义并使用以下函数
function endsWith($haystack, $needle) {
$length = strlen($needle);
return $length > 0 ? substr($haystack, -$length) === $needle : true;
}
在PHP7中,您可能想要使用
if (!function_exists('str_ends_with')) {
function str_ends_with($str, $end) {
return (@substr_compare($str, $end, -strlen($end))==0);
}
}
据我所知,这是二进制安全的,不需要额外的检查。
这是我能想到的最快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));
}
}
?>