String StartsWith and EndsWith in PHP
The following are a simple implementation checking whether a string starts or ends with another string in PHP.
function str_starts_with($haystack, $needle)
{
return strpos($haystack, $needle) === 0;
}
function str_ends_with($haystack, $needle)
{
return strrpos($haystack, $needle) + strlen($needle) ===
strlen($haystack);
}
$start = 'http';
$end = 'com';
$str = 'http://google.com';
str_starts_with($str, $start); // TRUE
str_ends_with($str, $end); // TRUE
Note that we need triple equals sign (===) since strpos() may return FALSE, while FALSE == 0 is actually TRUE.
The above approach is not efficient for large strings. It runs in O(n) time. The following approach is better; it runs in constant time.
function str_starts_with($haystack, $needle)
{
return substr_compare($haystack, $needle, 0, strlen($needle))
=== 0;
}
function str_ends_with($haystack, $needle)
{
return substr_compare($haystack, $needle, -strlen($needle))
=== 0;
}
The syntax of substr_compare() is as below:
int substr_compare(string $main_str, string $str, int $offset [, int $length [, bool $case_insensitivity = false ]])
substr_compare() compares main_str from position offset with str up to length characters.