You can use this in PHP versions less than 8.
<?php
function str_starts_with ( $haystack, $needle ) {
return strpos( $haystack , $needle ) === 0;
}
(PHP 8)
str_starts_with — 检查字符串是否以指定子串开头
haystack
在其中搜索的字符串。
needle
要在 haystack
中搜索的子串。
如果 haystack
以 needle
开头,返回 true
,否则返回 false
。
示例 #1 使用空字符串 ''
<?php
if (str_starts_with('abc', '')) {
echo "All strings start with the empty string";
}
?>
以上示例会输出:
All strings start with the empty string
示例 #2 展示大小写区分
<?php
$string = 'The lazy fox jumped over the fence';
if (str_starts_with($string, 'The')) {
echo "The string starts with 'The'\n";
}
if (str_starts_with($string, 'the')) {
echo 'The string starts with "the"';
} else {
echo '"the" was not found because the case does not match';
}
?>
以上示例会输出:
The string starts with 'The' "the" was not found because the case does not match
注意: 此函数可安全用于二进制对象。
You can use this in PHP versions less than 8.
<?php
function str_starts_with ( $haystack, $needle ) {
return strpos( $haystack , $needle ) === 0;
}
With credit to Paul Phillips for the original polyfill posted.
If you do not have PHP 8, you can use these functions to get the capability of the new string functions.
But! Remember to use a conditional check to make sure the function is not already defined.
<?php
// source: Laravel Framework
// https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Str.php
if (!function_exists('str_starts_with')) {
function str_starts_with($haystack, $needle) {
return (string)$needle !== '' && strncmp($haystack, $needle, strlen($needle)) === 0;
}
}
if (!function_exists('str_ends_with')) {
function str_ends_with($haystack, $needle) {
return $needle !== '' && substr($haystack, -strlen($needle)) === (string)$needle;
}
}
if (!function_exists('str_contains')) {
function str_contains($haystack, $needle) {
return $needle !== '' && mb_strpos($haystack, $needle) !== false;
}
}
?>
This keeps it from breaking in case you upgrade and forget that you added it. This is a good practice generally when using the global scope for your helper functions.