Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with().

`str_starts_with()` and `str_ends_with()` were introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) begins or ends with the given substring (needle).

WordPress core includes a polyfill for these functions on PHP < 8.0 as of WordPress 5.9.

This commit uses `str_starts_with()` and `str_ends_with()` in core files where appropriate:
* `$needle === substr( $string, 0, $length )`, where `$length` is the length of `$needle`, is replaced with `str_starts_with( $haystack, $needle )`.
* `$needle === substr( $string, $offset )`, where `$offset` is negative and the absolute value of `$offset` is the length of `$needle`, is replaced with `str_ends_with( $haystack, $needle )`.

This aims to make the code more readable and consistent, as well as better aligned with modern development practices.

Follow-up to [52039], [52040], [52326], [55703], [55710], [55987], [55988].

Props Soean, spacedmonkey, Clorith, ocean90, azaozz, sabernhardt, SergeyBiryukov.
Fixes #58220.

git-svn-id: https://develop.svn.wordpress.org/trunk@55990 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov
2023-06-22 14:55:47 +00:00
parent 38950d24c3
commit 66674fbfd9
41 changed files with 82 additions and 82 deletions
+2 -2
View File
@@ -1564,7 +1564,7 @@ class wpdb {
$type = substr( $placeholder, -1 );
if ( 'f' === $type && true === $this->allow_unsafe_unquoted_parameters
&& '%' === substr( $split_query[ $key - 1 ], -1, 1 )
&& str_ends_with( $split_query[ $key - 1 ], '%' )
) {
/*
@@ -1625,7 +1625,7 @@ class wpdb {
* Second, if "%s" has a "%" before it, even if it's unrelated (e.g. "LIKE '%%%s%%'").
*/
if ( true !== $this->allow_unsafe_unquoted_parameters
|| ( '' === $format && '%' !== substr( $split_query[ $key - 1 ], -1, 1 ) )
|| ( '' === $format && ! str_ends_with( $split_query[ $key - 1 ], '%' ) )
) {
$placeholder = "'%" . $format . "s'";
}