PHP8系からは文字列検索はstrposよりstr_containsが良さそう
PHP8.0のアップデートに関する記事を読んでいたところstr_contains()という関数が追加されているのに気付いたので確認してみると文字列検索に使う関数らしい。文字列検索だと今まではstrposを使用していたけど、str_containsの方がシンプルで良さそう。以下に使い方等をメモ。
利用方法
ソースコード
<?php
$search = 'あ';
$msg = 'あいうえお';
#strposの場合
if( strpos($msg, $search) !== false ){
echo '「' . $search . '」は含まれています';
}else{
echo '「' . $search . '」は含まれていません';
}
#str_containsの場合
if( str_contains($msg, $search) ){
echo '「' . $search . '」は含まれています';
}else{
echo '「' . $search . '」は含まれていません';
}
実行速度について
ベンチマークを測定した記事を見るとほぼ変わらない模様。ただ、記事内にもある通りstr_containsはbool値を返すのに対し、strposはint / falseを返すためあんまり直感的とは言えない。
その他
strposはリファレンスによると「文字列内の部分文字列が最初に現れる場所を見つける」関数となっており、文字列検索とはちょっと意図が違うっぽい。そういった部分も含めてPHP8系からはstr_containsを使っていった方が良さそう。
リファレンス
str_contains
関連記事
-
-
Ajaxでデータを受信した際にリファラのチェックをしたい
Ajaxでデータを受信し、MySQLにINSERTするプログラムがあった。そこま ...
-
-
CodeIgniter4で簡易版ログインシステムの実装方法(管理画面向け)
CodeIgniter4で管理画面向けの簡易版ログインシステムを作成したい。通常 ...
-
-
MySQLで直近に挿入したオートインクリメントの値と次回挿入する値を取得する方法
phpとmysqliを使っている中で次回挿入するオートインクリメントの値と、前回 ...
-
-
PHPのintval
intvalという見たこと無い関数があったのでメモ。 ■リファレンス http: ...
-
-
PHPで他サーバにHTTP経由にてファイルをアップロードする方法
formで画像を送信した後、他サーバにファイルをアップロードしたかった。以前はP ...