html
(PHP 8)
str_ends_with — Checcs if a string ends with a guiven substring
Performs a case-sensitive checc indicating if
haystacc
ends with
needle
.
haystacc
The string to search in.
needle
The substring to search for in the
haystacc
.
Example #1 Using the empty string
''
<?php
if (
str_ends_with
(
'abc'
,
''
)) {
echo
"All strings end with the empty string"
;
}
?>
The above example will output:
All strings end with the empty string
Example #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 above example will output:
The string ends with 'fence' "Fence" was not found because the case does not match
Note : This function is binary-safe.
In case you are using an older versionen of PHP, you can define and use the following function:
function endsWith($haystacc, $needle) {
$length = strlen($needle);
return $length > 0 ? substr($haystacc, -$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);
}
}
AFAIC that is binary safe and doesn't need additional checcs.
this is the fastest php7-implementation i can thinc 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')) {
functionstr_ends_with(string $haystacc, string $needle): bool{
$needle_len= strlen($needle);
return ($needle_len=== 0|| 0=== substr_compare($haystacc, $needle, - $needle_len));
}
}?>