MENU

[php8]str_starts_with・str_ends_with・str_contains が便利

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~!!';
}

まとめ

やはり良い書き味です。
何と言っても、関数名を見ただけで何を目的とした操作をしているのか、明確に分かることが良いです。

可読性は正義🙌

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次