特定の文字列を含むかどうかを検索する
特定の文字列を含むかどうかを検索する方法として「strpos()(基本)」「 mb_strpos()(日本語)」「 preg_match()(正規表現)」 をご紹介します。
strpos関数(基本)で検索する
strpos関数は最初に指定した文字列が現れる場所を取得する関数です。
文字列が取得できれば取得できた位置の整数値が返され、取得できなければ false で返されるため、指定した文字列を含むかどうかの判定に使用することができます。
$text = 'abcdefg';
var_dump(strpos($text, 'a'));
// 結果:int(0)
var_dump(strpos($text, 'b'));
// 結果:int(1)
// 使用例 文字列が含まれるかどうかをチェック
if(strpos($text, 'c') !== false) {
echo "cが含まれています":
} else {
echo "cは含まれていません";
}
// 結果:cが含まれています。
strpos関数はあくまで指定した文字列が現れる場所を取得する関数です。
そのため、if (strpos($text, ‘a’)) のように記述してしまうと’a’が$textに含まれていても「0」が返ってきてしまうためfalse判定になってしまいます。(phpで「0」はboolean変数においてfalseに変換されてしまいます)
そのためしっかり「strpos($text, ‘a’) !== false」のように記載する必要があります。
参照:PHP公式サイト strpos関数
mb_strpos関数(日本語)で検索する
strpos関数はマルチバイト文字(日本語)には対応していないため、日本語での検索をする場合、mb_strpos関数を使用します。
使い方はstrposと同じです。
// 文字列が含まれるかどうかをチェック(日本語)
$text = "あいうえお"
if(strpos($text, "あ") !== false) {
echo "あが含まれています":
} else {
echo "あは含まれていません";
}
// 結果:あが含まれています。
preg_match関数(正規表現)で検索する
正規表現で検索を行いたい場合はpreg_match関数を使用します。
// 文字列が含まれるかどうかをチェック(正規表現)
$text = 'My name is Tanaka'
if(preg_match($text, '/My/')) {
echo "Myが含まれています":
} else {
echo "Myが含まれていません";
}
// 結果:Myが含まれています。
この関数は正規表現で検索した文字列が含まれていれば「1」、含まれていなければ「0」を返すためstrpos関数のように「!== false」をつけずに判定することができます。
参照:PHP公式サイト preg_match関数
さらにPHPに関する知識を深められたい方へ
さらにPHPに関する知識を深められたい場合、筆者も利用しているUdemyで学習することをお勧めします。
参考までに、初心者にもおすすめのプログラムは
【PHPの勉強に予算をかけて、本気で勉強されたい方】
・ちゃんと学ぶ、PHP+MySQL(MariaDB)入門講座
→初心者でも始めることができ、このプログラムを利用すると、会員登録をしたユーザーに個別のコンテンツを提供したり、ユーザー同士のコミュニティを作成したり、またデータベースと連携してショップサイトや、データの検索サイトなど、さまざまなWebサービス・Webシステムを開発することができます。
【初めはそこまで予算をかけず、PHPについて勉強されたい方】
・現役Webエンジニアが教えるPHP,MySQL,dockerを使用したフルスクラッチ開発
→PHPでの開発を網羅的に勉強することができ、初心者にもおすすめです。
上記以外の講座を購読されたい方は以下のリンクからPHP講座の一覧ページを確認することができます。
UdemyのPHP一覧ページはここから。
ぜひご活用ください!
コメント