See if a string ends with a substring.
Paramètres
$haystack: The main string being compared.
$needle: The secondary string being compared.
Return value
bool
Fichier
-
./
advagg.module, line 683
Code
function advagg_string_ends_with($haystack, $needle) {
// Define substr_compare if it doesn't exist (PHP 4 fix).
if (!function_exists('substr_compare')) {
/**
* Binary safe comparison of two strings from an offset, up to length
* characters.
*
* Compares main_str from position offset with str up to length characters.
* @see http://php.net/substr-compare#53084
*
* @param $main_str
* The main string being compared.
* @param $str
* The secondary string being compared.
* @param $offset
* The start position for the comparison. If negative, it starts counting
* from the end of the string.
* @param $length
* The length of the comparison. The default value is the largest of the
* length of the str compared to the length of main_str less the offset.
* @param $case_insensitivity
* If TRUE, comparison is case insensitive.
* @return
* Returns < 0 if main_str from position offset is less than str, > 0 if
* it is greater than str, and 0 if they are equal. If offset is equal to
* or greater than the length of main_str or length is set and is less than
* 1, substr_compare() prints a warning and returns FALSE.
*/
function substr_compare($main_str, $str, $offset, $length = NULL, $case_insensitivity = FALSE) {
$offset = (int) $offset;
// Throw a warning because the offset is invalid
if ($offset >= strlen($main_str)) {
trigger_error('The start position cannot exceed initial string length.', E_USER_WARNING);
return FALSE;
}
// We are comparing the first n-characters of each string, so let's use the PHP function to do it
if ($offset == 0 && is_int($length) && $case_insensitivity === TRUE) {
return strncasecmp($main_str, $str, $length);
}
// Get the substring that we are comparing
if (is_int($length)) {
$main_substr = substr($main_str, $offset, $length);
$str_substr = substr($str, 0, $length);
}
else {
$main_substr = substr($main_str, $offset);
$str_substr = $str;
}
// Return a case-insensitive comparison of the two strings
if ($case_insensitivity === TRUE) {
return strcasecmp($main_substr, $str_substr);
}
// Return a case-sensitive comparison of the two strings
return strcmp($main_substr, $str_substr);
}
}
$haystack_len = strlen($haystack);
$needle_len = strlen($needle);
if ($needle_len > $haystack_len) {
return FALSE;
}
return substr_compare($haystack, $needle, $haystack_len - $needle_len, $needle_len, TRUE) === 0;
}