Skip to content

Commit 8619fbc

Browse files
committed
General: Backport polyfills for str_ends_with() and str_starts_with() .
Merges [52040], [56016], and [56015] to 5.5 branch. Props ocean90, SergeyBiryukov, desrosj, joemcgill, jorbin, mukesh27. git-svn-id: https://develop.svn.wordpress.org/branches/5.5@57458 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 0ee789a commit 8619fbc

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/wp-includes/compat.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,3 +370,49 @@ function is_iterable( $var ) {
370370
return ( is_array( $var ) || $var instanceof Traversable );
371371
}
372372
}
373+
374+
if ( ! function_exists( 'str_starts_with' ) ) {
375+
/**
376+
* Polyfill for `str_starts_with()` function added in PHP 8.0.
377+
*
378+
* Performs a case-sensitive check indicating if
379+
* the haystack begins with needle.
380+
*
381+
* @since 5.9.0
382+
*
383+
* @param string $haystack The string to search in.
384+
* @param string $needle The substring to search for in the `$haystack`.
385+
* @return bool True if `$haystack` starts with `$needle`, otherwise false.
386+
*/
387+
function str_starts_with( $haystack, $needle ) {
388+
if ( '' === $needle ) {
389+
return true;
390+
}
391+
392+
return 0 === strpos( $haystack, $needle );
393+
}
394+
}
395+
396+
if ( ! function_exists( 'str_ends_with' ) ) {
397+
/**
398+
* Polyfill for `str_ends_with()` function added in PHP 8.0.
399+
*
400+
* Performs a case-sensitive check indicating if
401+
* the haystack ends with needle.
402+
*
403+
* @since 5.9.0
404+
*
405+
* @param string $haystack The string to search in.
406+
* @param string $needle The substring to search for in the `$haystack`.
407+
* @return bool True if `$haystack` ends with `$needle`, otherwise false.
408+
*/
409+
function str_ends_with( $haystack, $needle ) {
410+
if ( '' === $haystack ) {
411+
return '' === $needle;
412+
}
413+
414+
$len = strlen( $needle );
415+
416+
return substr( $haystack, -$len, $len ) === $needle;
417+
}
418+
}

0 commit comments

Comments
 (0)