Thursday 21 January 2016

What's the most efficient test of whether a PHP string ends with another string?



The standard PHP way to test whether a string $str ends with a substring $test is:



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


Is this the fastest way?


Answer




What Assaf said is correct. There is a built in function in PHP to do exactly that.



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


If $test is longer than $str PHP will give a warning, so you need to check for that first.



function endswith($string, $test) {
$strlen = strlen($string);
$testlen = strlen($test);

if ($testlen > $strlen) return false;
return substr_compare($string, $test, $strlen - $testlen, $testlen) === 0;
}

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...