【PHP】文字列に特定の文字や数値が含まれているかチェックする方法!

この記事からわかること
- 文字列の中に特定の値が含まれているかチェックする方法
- 文字ではなく数値が存在するか検索
- 日付に特定の数字がつくか調べる方法
- 文字列の中に何個特定の値が存在するか
- 配列の中に指定の値があるかどうか
index
[open]
\ アプリをリリースしました /
文字列の中に特定の文字があるかどうか
文字列の中に特定の文字があるかどうかをチェックするにはmb_strpos関数
を使います。mb_strpos関数
は対象文字列の中に検索文字列がある場合はその位置を、無い場合はFALSE
を返します。
$str = "東京都足立区青井";
$search = "足立区";
$result = mb_strpos($str,$search);
// 文字列の先頭に該当文字があると0を返すので
// falseと===(厳格に比較)で識別する
if($result === false){
echo "見つかりませんでした";
}else{
echo $result."番目に見つかりました";
}
mb_strpos(“対象文字列", “検索文字列” );
返り値:int 文字位置 or boolean false
日本語(マルチバイト文字)を対象にする場合はmb_strpos
関数を、アルファベットのみの場合はstrpos
関数を使います。
公式マニュアル:strpos関数
数値の中に特定の数字があるかどうか
数値の中に特定の数字があるかどうかをチェックするにはpreg_match関数
を使います。preg_match関数
は正規表現を使用してマッチするかどうかを真偽値(正確には1/0)で返します。
例えば「日付に2がつく日はキャンペーン」といった倍数や約数ではなく、対象の数字が入っているかどうかの条件は以下のようにして識別することができます。
$day = 24;
if (preg_match("/2/", (string)$day)){
echo "2の付く日です";
}else{
echo "2の付く日ではありません";
}
preg_match(
string $pattern, // 正規表現パターン
string $subject, // 対象文字列
array &$matches = null, //マッチした文字列を格納
int $flags = 0, //動作フラグ
int $offset = 0 //検索の開始位置
)
返り値:int or false // マッチした場合は1しなかった場合は0
公式マニュアル:PHP正規表現
文字列の中に何個特定の値が存在するか
対象文字列の中に検索文字列がいくつ含まれているかを取得するにはmb_substr_count関数
を使います。
$str = "https://appdev-room.com/php-string-check";
echo mb_substr_count($str,"-");
// 2
mb_substr_count("対象文字列","検索文字列");
返り値:int 出現回数
公式マニュアル:mb_substr_count関数
配列の中に特定の値があるかどうか調べる
配列の値に特定の値があるか調べるにはarray_search関数
を使います。array_search関数
は配列の値に特定の値があればそのキー値を返します。配列は連想配列でも問題なく動作します。
$array = ['PHP' , 'Javascript' , 'Swift' , 'VBA'];
echo array_search('Swift',$array);
// 結果:2
$array = ['PHP' => 'Laravel' , 'Javascript' => 'Vue.js', 'Swift' => 'BLANK' , 'VBA' => 'BLANK'];
echo array_search('BLANK',$array);
// 結果:Swift
同じ値が複数ある場合は最初にマッチしたキー値を返します。
array_search(
mixed $needle, // 検索値
array $array, // 対象配列
)
返り値:int or string or false
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
おすすめ記事:PHP技術者試験(初級)を受けた感想とオススメ参考書