Quantcast
Channel: PHP8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 521

PHP8 に文字列判定を改善する関数が導入されます!

$
0
0

こんにちは。やまゆです。

PHP8 の RC 版がリリースされ、そろそろ触っても良い感じになってきました。

色々楽しく触ってみていますが、今回は 「文字列関連の新規関数」を紹介したいと思います。

str_contains

RFC はこちら

Laravelなどで既に実装されているこの str_containsですが、コア関数として実装されることになりました。

str_contains(string$haystack,string$needle):bool

$haystack$needleの引数名はほかの str_ 関連関数でも使われますね。

false!==strpos($haystack,$needle)

という直感的でないやり方で現在の関数でも実現出来ますが、より簡単に文字列が中に含まれているかどうかを判定できるようになりました。

if(str_contains($request->getHeaderLine('Content-Type'),'json')){$request=$request->withParsedBody(json_decode((string)$request->getBody(),true));}

雑実装ですがこういうロジックが分かりやすくなります。

<?php// 実装例var_dump(str_contains('Hello','He'));// bool(true)var_dump(str_contains('Hello',''));// bool(true)var_dump(str_contains('➡⇦','➡'));// bool(true)

※空文字は「全ての文字列にヒットする」という判定が一般的なため、 $needleが空文字列の場合は常に true が返ります。

str_starts_with, str_ends_with

RFC はこちら

str_containsより厳しい判定として、指定された $needleから始まった文字列かどうかを判定する str_starts_withと、指定された $needleで終わる文字列かどうかを判定する str_ends_withも追加されました。

<?php// 実装例var_dump(str_starts_with('Hello','He'));// bool(true)var_dump(str_ends_with('Hello',''));// bool(true)var_dump(str_starts_with('➡⇦','➡'));// bool(true)

文字列チェックが直感的に出来るようになりましたね。


Viewing all articles
Browse latest Browse all 521

Trending Articles