php strstrを使って文字列の中に指定した文字列が含まれているかを判定する

  • 作成日 2021.11.29
  • php
php strstrを使って文字列の中に指定した文字列が含まれているかを判定する

phpで、strstrを使用して、文字列の中に指定した文字列が含まれているかを判定するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

strstr使い方

strstrを使用すれば、文字列の中に指定した文字列が含まれているかを判定することが可能です。

strstr(文字列, 検索する文字列);
// 存在すれば、見つかった文字列以降の文字列が返ります。
// なければfalseが返ります。

以下は、文字列の中に指定した文字列が含まれているかを判定するサンプルコードとなります。

<?php

$str1 = 'mebee';
$str2 = 'be';
$str3 = 'a';

echo (strstr($str1, $str2) ? '存在します' : '存在しません').PHP_EOL;
// 存在します

var_dump(strstr($str1, $str2));
// string(3) "bee"

echo (strstr($str1, $str3) ? '存在します' : '存在しません').PHP_EOL;
// 存在しません

var_dump(strstr($str1, $str3));
// bool(false)

日本語でも動作します。

<?php

$str1 = '本日は晴天なり';
$str2 = '晴天';
$str3 = '雨';

echo (strstr($str1, $str2) ? '存在します' : '存在しません').PHP_EOL;
// 存在します

var_dump(strstr($str1, $str2));
// string(12) "晴天なり"

echo (strstr($str1, $str3) ? '存在します' : '存在しません').PHP_EOL;
// 存在しません

var_dump(strstr($str1, $str3));
// bool(false)

strposを使用しても、同じ結果となりますが、

strpos(文字列, 検索したい文字列)
// 存在した場合は、文字列の見つかった位置を返す。
// なければfalseが返ります。

strposを使用

<?php

$str1 = 'mebee';
$str2 = 'be';
$str3 = 'a';

echo (strpos($str1, $str2) ? '存在します' : '存在しません').PHP_EOL;
// 存在します

var_dump(strpos($str1, $str2));
// int(2)

echo (strpos($str1, $str3) ? '存在します' : '存在しません').PHP_EOL;
// 存在しません

var_dump(strpos($str1, $str3));
// bool(false)

検索する文字列が先頭にあると、0が返るためstrposではfalse扱いになってしまいます。

<?php

$str1 = 'mebee';
$str2 = 'me';
$str3 = 'a';

echo (strstr($str1, $str2) ? '存在します' : '存在しません').PHP_EOL;
// 存在します

var_dump(strstr($str1, $str2));
// string(5) "mebee"

echo (strstr($str1, $str3) ? '存在します' : '存在しません').PHP_EOL;
// 存在しません

var_dump(strstr($str1, $str3));
// bool(false)

echo (strpos($str1, $str2) ? '存在します' : '存在しません').PHP_EOL;
// 存在しません

var_dump(strpos($str1, $str2));
// int(0)

echo (strpos($str1, $str3) ? '存在します' : '存在しません').PHP_EOL;
// 存在しません

var_dump(strpos($str1, $str3));
// bool(false)