一尘不染

PHP字符串是否以另一个字符串结尾的最有效测试是什么?

php

测试字符串是否$str以子字符串结尾的标准PHP方法$test是:

$endsWith = substr( $str, -strlen( $test ) ) == $test

这是最快的方法吗?


阅读 390

收藏
2020-05-29

共1个答案

一尘不染

阿萨夫所说的是正确的。PHP中有一个内置函数可以做到这一点。

substr_compare($str, $test, strlen($str)-strlen($test), strlen($test)) === 0;

如果$test$strPHP 长,则会发出警告,因此您需要首先进行检查。

function endswith($string, $test) {
    $strlen = strlen($string);
    $testlen = strlen($test);
    if ($testlen > $strlen) return false;
    return substr_compare($string, $test, $strlen - $testlen, $testlen) === 0;
}
2020-05-29