PHP 文字列の位置を取得する(mb_strpos/mb_strrpos)

PHPの文字列の位置を取得するサンプルです。

確認環境
・PHP 7.1.8

目次

前から検索 前から検索し最初の文字列の位置を取得する(mb_strpos)
  検索開始位置を指定する(mb_strpos)
後ろから検索 後から検索し最初の文字列の位置を取得する(mb_strrpos)
  検索開始位置を指定する(mb_strrpos)

前から検索し最初の文字列の位置を取得する(mb_strpos)

mb_strpos ( string 対象の文字列 , string 検索する文字 [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )
  • 文字列を前から検索して出現した位置(数値)を返します。
  • 先頭の1文字目の位置は0です。
  • 戻り値はintです。該当値がない場合はfalseです。
  • encodingを指定できます。省略した場合は、内部文字エンコーディングを使用します。
  • offsetは検索を始める位置です。省略可能です。
  • 日本語などのマルチバイト文字に対応しています。
  • マルチバイト文字を使用しない場合は、mb_が付かないstrpos関数を使用できます。

mb_strpos関数のサンプルです。

<?php

$str1 = "abcabc";
var_dump(mb_strpos($str1,"a")); //int(0)
var_dump(mb_strpos($str1,"b")); //int(1)
var_dump(mb_strpos($str1,"c",0,"UTF-8")); //int(2)
var_dump(mb_strpos($str1,"abc")); //int(0)
var_dump(mb_strpos($str1,"z")); //bool(false)

$str2 = "あいうあいう";
var_dump(mb_strpos($str2,"あ")); //int(0)
var_dump(mb_strpos($str2,"い")); //int(1)
var_dump(mb_strpos($str2,"う")); //int(2)

?>

3行目は、変数に文字列を代入しています。
4~7行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
8行目は、該当の文字がないのでfalseが返ります。
10行目は、変数に日本語の文字列を代入しています。
11~13行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。

検索開始位置を指定する(mb_strpos)

mb_strpos関数で、検索開始位置を指定するサンプルです。

<?php

$str1 = "あいうあいう";

var_dump(mb_strpos($str1,"あ",5)); //bool(false)
var_dump(mb_strpos($str1,"あ",4)); //bool(false)
var_dump(mb_strpos($str1,"あ",3)); //int(3)
var_dump(mb_strpos($str1,"あ",2)); //int(3)
var_dump(mb_strpos($str1,"あ",1)); //int(3)
var_dump(mb_strpos($str1,"あ",0)); //int(0)

?>

5行目の引数は5で対象の文字列は(う)です。文字(あ)はないのでfalseです。
6行目の引数は4で対象の文字列は(いう)です。文字(あ)はないのでfalseです。
7行目の引数は3で対象の文字列は(あいう)です。位置の3が返ります。
8行目の引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
9行目の引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
10行目の引数は0で対象の文字列は(あいうあいう)です。位置の0が返ります。

以下は、PHPマニュアルのmb-strpos関数のリンクです。
https://www.php.net/manual/ja/function.mb-strpos.php

後から検索し最初の文字列の位置を取得する(mb_strrpos)

mb_strrpos ( string 対象の文字列 , string 検索する文字 [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )
  • 文字列を後から検索して出現した位置(数値)を返します。
  • 先頭の1文字目の位置は0です。
  • 戻り値はintです。該当値がない場合はfalseです。
  • encodingを指定できます。省略した場合は、内部文字エンコーディングを使用します。
  • offsetは検索を始める位置です。省略可能です。
  • 日本語などのマルチバイト文字に対応しています。
  • マルチバイト文字を使用しない場合は、mb_が付かないstrrpos関数を使用できます。

mb_strrpos関数のサンプルです。

<?php

$str1 = "abcabc";
var_dump(mb_strrpos($str1,"a")); //int(3)
var_dump(mb_strrpos($str1,"b")); //int(4)
var_dump(mb_strrpos($str1,"c",0,"UTF-8")); //int(5)
var_dump(mb_strrpos($str1,"abc")); //int(3)
var_dump(mb_strrpos($str1,"z")); //bool(false)

$str2 = "あいうあいう";
var_dump(mb_strrpos($str2,"あ")); //int(3)
var_dump(mb_strrpos($str2,"い")); //int(4)
var_dump(mb_strrpos($str2,"う")); //int(5)

?>

3行目は、変数に文字列を代入しています。
4~7行目は、後から検索し引数の文字列が最初に見つかった位置を返しています。
8行目は、該当の文字がないのでfalseが返ります。
10行目は、変数に日本語の文字列を代入しています。
11~13行目は、後から検索し引数の文字列が最初に見つかった位置を返しています。

検索開始位置を指定する(mb_strrpos)

mb_strrpos関数で、検索開始位置を指定するサンプルです。

<?php

$str1 = "あいうあいう";

var_dump(mb_strrpos($str1,"あ",5)); //bool(false)
var_dump(mb_strrpos($str1,"あ",4)); //bool(false)
var_dump(mb_strrpos($str1,"あ",3)); //int(3)
var_dump(mb_strrpos($str1,"あ",2)); //int(3)
var_dump(mb_strrpos($str1,"あ",1)); //int(3)
var_dump(mb_strrpos($str1,"あ",0)); //int(3)

?>

5行目の引数は5で対象の文字列は(う)です。文字(あ)はないのでfalseです。
6行目の引数は4で対象の文字列は(いう)です。文字(あ)はないのでfalseです。
7行目の引数は3で対象の文字列は(あいう)です。位置の3が返ります。
8行目の引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
9行目の引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
10行目の引数は0で対象の文字列は(あいうあいう)です。位置の3が返ります。

以下は、PHPマニュアルのmb_strrpos関数のリンクです。
https://www.php.net/manual/ja/function.mb-strrpos.php

関連の記事

PHP 文字列の値を比較するサンプル(strcmp)
PHP 文字列の長さを取得するサンプル(mb_strlen/strlen)
PHP 英字の大文字と小文字を変換(strtolower/strtoupper)
PHP 文字列の一部を取得する(mb_substr/substr)

△上に戻る