php 中的 startsWith() 和 endsWith() 函数

2022-08-30 05:44:01

如何编写两个函数,如果字符串以指定的字符/字符串开头或以它结尾,则返回?

例如:

$str = '|apples}';

echo startsWith($str, '|'); //Returns true
echo endsWith($str, '}'); //Returns true

答案 1

PHP 8.0 及更高版本

从 PHP 8.0 开始,您可以使用

str_starts_with 手动

str_ends_with 手动

echo str_starts_with($str, '|');

8.0 之前的 PHP

function startsWith( $haystack, $needle ) {
     $length = strlen( $needle );
     return substr( $haystack, 0, $length ) === $needle;
}
function endsWith( $haystack, $needle ) {
    $length = strlen( $needle );
    if( !$length ) {
        return true;
    }
    return substr( $haystack, -$length ) === $needle;
}

答案 2

您可以使用substr_compare函数来检查“开始于”和“结束于”:

function startsWith($haystack, $needle) {
    return substr_compare($haystack, $needle, 0, strlen($needle)) === 0;
}
function endsWith($haystack, $needle) {
    return substr_compare($haystack, $needle, -strlen($needle)) === 0;
}

这应该是 PHP 7(基准测试脚本)上最快的解决方案之一。针对 8KB 干草堆、各种长度的针头以及完整、部分和无匹配的案例进行了测试。strncmp 对于开始使用是一个更快的触摸,但它不能检查结束结束。


推荐