php8から導入された文字列操作系の以下関数
- str_starts_with
- str_end_with
- str_contains
実業務で使ってみて良い書き味で感動したので、まとめ
目次
実コードで比較
PHP8以前以後のコードで書き味を比較してみます。
str_starts_with
公式:https://www.php.net/manual/ja/function.str-starts-with.php
用途:文字列が指定された特定の文字列から始まるかどうか判定
<?php
// 特定の文字列から始まるかどうかを検査したいとして
$haystack = 'hello world!!';
$needle = 'hello';
// ~PHP8
if (strpos($haystack, $needle) === 0) {
echo 'start with hello ~php8!!';
}
// PHP8~
if (str_starts_with($haystack, $needle)) {
echo 'start with hello php8~!!';
}
str_ends_with
公式:https://www.php.net/manual/ja/function.str-ends-with.php
用途:文字列が指定された特定の文字列で終わるかどうか判定
<?php
// 特定の文字列で終わるかかどうかを検査したいとして
$haystack = 'hello world!!';
$needle = 'world!!';
// ~PHP8
if (substr($haystack, -strlen($needle)) === $needle) {
echo 'end with hello ~php8!!';
}
// PHP8~
if (str_ends_with($haystack, $needle)) {
echo 'end with hello php8~!!';
}
str_contains
公式:https://www.php.net/manual/ja/function.str-contains.php
用途:文字列に特定の文字列が含まれるかどうか判定
<?php
// 特定の文字列が含まれるかどうかを検査したいとして
$haystack = 'hello world!!';
$needle = 'hello';
// ~PHP8
if (strpos($haystack, $needle) !== 0) {
echo 'contains hello ~php8!!';
}
// PHP8~
if (str_contains($haystack, $needle)) {
echo 'contains hello php8~!!';
}
まとめ
やはり良い書き味です。
何と言っても、関数名を見ただけで何を目的とした操作をしているのか、明確に分かることが良いです。
可読性は正義🙌
コメント