文字列を関数mb_strposで検索する
PHPで文字を検索するには関数mb_strpos
をつかいます。
mb_strpos(対象文字列, 検索文字列, 検索開始位置, エンコード);
対象文字列
検索の対象となる文字列をかきます。
検索文字列
検索する文字列をかきます。
検索開始位置(省略可能)
文字列を検索する開始位置を整数でかきます。
正の数字をかくと、開始位置が文字列の先頭からになり、先頭の位置は「0」になります。
負の数字をかくと、開始位置が文字列の末尾からになり、末尾の位置は「-1」になります。
省略すると「0」になります。
エンコード(省略可能)
文字のエンコーディングをかきます。
省略すると「内部文字エンコーディング」になります。
検索開始位置を省略した場合
$str = 'イチゴとミカンとモモ';
print mb_strpos($str, 'イチゴ'); // 結果:0
print mb_strpos($str, 'ミカン'); // 結果:4
print mb_strpos($str, 'モモ'); // 結果:8
検索開始位置を省略しているので、$str
の0番目の文字(先頭)から検索します。
検索した文字列が見つかった場合、最初の位置が返されます。
$str
からイチゴ
を検索します。イチゴ
は$str
の0番目からはじまるので0
を返します。
$str
からミカン
を検索します。ミカン
は$str
の4番目からはじまるので4
を返します。
$str
からモモ
を検索します。モモ
は$str
の8番目からはじまるので8
を返します。
検索開始位置に正の数字を書いた場合
検索開始位置に正の数字をかくと、先頭から何番目の文字を検索開始位置にするかになります。
例えば2とかくと先頭から3文字目が検索開始位置になります。
正の数字は文字列の先頭が0からはじまります。
$str = 'イチゴとミカン';
print mb_strpos($str, 'ミカン', 0); // 結果:4
print mb_strpos($str, 'ミカン', 1); // 結果:4
print mb_strpos($str, 'ミカン', 2); // 結果:4
print mb_strpos($str, 'ミカン', 3); // 結果:4
print mb_strpos($str, 'ミカン', 4); // 結果:4
print mb_strpos($str, 'ミカン', 5); // 結果:表示されない
print mb_strpos($str, 'ミカン', 6); // 結果:表示されない
先頭から0番目の文字よりあとの「イチゴとミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
先頭から1番目の文字よりあとの「チゴとミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
先頭から2番目の文字よりあとの「ゴとミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
先頭から3番目の文字よりあとの「とミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
先頭から4番目の文字よりあとの「ミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
先頭から5番目の文字よりあとの「カン」が対象の文字列になり、ミカン
は含まれないため表示されません。
先頭から6番目の文字よりあとの「ン」が対象の文字列になり、ミカン
は含まれないため表示されません。
文字列を後ろから検索する
検索開始位置に負の数字をかくと、末尾から何番目の文字を検索開始位置にするかになります。
例えば-2をかくと末尾から2文字戻った文字が検索開始位置になります。
正の数字は0からはじまりましたが、負の数字は文字列の末尾が-1からはじまります。
$str = 'イチゴとミカン';
print mb_strpos($str, 'ミカン', -1); // 結果:表示されない
print mb_strpos($str, 'ミカン', -2); // 結果:表示されない
print mb_strpos($str, 'ミカン', -3); // 結果:4
print mb_strpos($str, 'ミカン', -4); // 結果:4
print mb_strpos($str, 'ミカン', -5); // 結果:4
print mb_strpos($str, 'ミカン', -6); // 結果:4
print mb_strpos($str, 'ミカン', -7); // 結果:4
末尾から-1番目の文字よりあとの「ン」が対象の文字列になり、ミカン
は含まれないため表示されません。
末尾から-2番目の文字よりあとの「カン」が対象の文字列になり、ミカン
は含まれないため表示されません。
末尾から-3番目の文字よりあとの「ミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
末尾から-4番目の文字よりあとの「とミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
末尾から-5番目の文字よりあとの「ゴとミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
末尾から-6番目の文字よりあとの「チゴとミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
末尾から-7番目の文字よりあとの「イチゴとミカン」が対象の文字列になり、ミカン
は全体の文字列('イチゴとミカン'
)の4番目から始まるので4
を返します。
検索文字列が対象の文字列にないときは表示されない
検索する文字列が対象の文字列にないとき、結果には何も表示されずfalse
を返します。
$文字列 = 'イチゴとミカンとモモ';
$結果 = mb_strpos($文字列, 'ナシ');
print $結果; // 結果:表示されない
var_dump ($結果); // 結果:bool(false)
$文字列
にナシ
が見つからないため、結果にはなにも表示されません。
関数var_dump
で表示すると、bool(false)
と表示されfalse
を返していることがわかります。
「 検索したい文字列 」が「 対象の文字列 」に複数ある場合
検索したい文字列が対象の文字列に複数あった場合、対象の文字列の最初の検索したい文字列の位置を返します。
$文字列 = 'イチゴとイチゴ';
print mb_strpos($文字列, 'イチゴ', 0); // 結果:0
print mb_strpos($文字列, 'イチゴ', 1); // 結果:4
print mb_strpos($文字列, 'イチゴ', 2); // 結果:4
print mb_strpos($文字列, 'イチゴ', 3); // 結果:4
print mb_strpos($文字列, 'イチゴ', 4); // 結果:4
print mb_strpos($文字列, 'イチゴ', 5); // 結果:表示されない
print mb_strpos($文字列, 'イチゴ', 6); // 結果:表示されない
先頭から0番目の文字よりあとの「イチゴとイチゴ」が対象の文字列になります。
対象の文字列で最初のイチゴ
の位置は全体の文字列(イチゴとイチゴ
)の0番目なので0
を返します。
先頭から1番目の文字よりあとの「チゴとイチゴ」が対象の文字列になります。
対象の文字列で最初のイチゴ
の位置は全体の文字列(イチゴとイチゴ
)の4番目なので4
を返します。
先頭から2番目の文字よりあとの「ゴとイチゴ」が対象の文字列になります。
対象の文字列で最初のイチゴ
の位置は全体の文字列(イチゴとイチゴ
)の4番目なので4
を返します。
先頭から3番目の文字よりあとの「とイチゴ」が対象の文字列になります。
対象の文字列で最初のイチゴ
の位置は全体の文字列(イチゴとイチゴ
)の4番目なので4
を返します。
先頭から4番目の文字よりあとの「イチゴ」が対象の文字列になります。
対象の文字列で最初のイチゴ
の位置は全体の文字列(イチゴとイチゴ
)の4番目なので4
を返します。
先頭から5番目の文字よりあとの「チゴ」が対象の文字列になります。
対象の文字列にイチゴ
は含まれないため表示されません。
先頭から6番目の文字よりあとの「ゴ」が対象の文字列になります。
対象の文字列にイチゴ
は含まれないため表示されません。