略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: str_ends_with

2024-05-04

str_ends_with

(PHP 8)

str_ends_withChecks if a string ends with a given substring

说明

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

Performs a case-sensitive check indicating if haystack ends with needle.

参数

haystack

The string to search in.

needle

The substring to search for in the haystack.

返回值

Returns true if haystack ends with needle, false otherwise.

范例

示例 #1 Using the empty string ''

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

以上例程会输出:

All strings end with the empty string

示例 #2 Showing case-sensitivity

<?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() - Determine if a string contains a given substring
  • str_starts_with() - Checks if a string starts with a given substring
  • stripos() - 查找字符串首次出现的位置(不区分大小写)
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
  • strstr() - 查找字符串的首次出现
  • strpbrk() - 在字符串中查找一组字符的任何一个字符
  • substr() - 返回字符串的子串
  • preg_match() - 执行匹配正则表达式
add a noteadd a note

User Contributed Notes 4 notes

up
19
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
1
divinity76 at gmail dot com
7 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
0
kitchin at lapage dot com
4 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 ).
up
0
Reinder
7 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.

官方地址:https://www.php.net/manual/en/function.str-ends-with.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3