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
検索対象の文字列
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.