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

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

確認環境
・PHP 7

目次

サンプル 前から検索する(引数2つ)
  前から検索する+開始位置を指定(引数3つ)
  後から検索する(引数2つ)
  後から検索する+開始位置を指定(引数3つ)

前から検索する(引数2つ)

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

mb_strpos関数のサンプルです。

<?php
$a = "あいうあいう";
var_dump(mb_strpos($a, "あ")); //int(0)
var_dump(mb_strpos($a, "い")); //int(1)
var_dump(mb_strpos($a, "う")); //int(2)
var_dump(mb_strpos($a, "あいう")); //int(0)
var_dump(mb_strpos($a, "ん")); //bool(false)

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

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

 

前から検索する+開始位置を指定(引数3つ)

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

<?php
$a = "あいうあいう";
var_dump(mb_strpos($a, "あ", 0)); //int(0)
var_dump(mb_strpos($a, "あ", 1)); //int(3)
var_dump(mb_strpos($a, "あ", 2)); //int(3)
var_dump(mb_strpos($a, "あ", 3)); //int(3)
var_dump(mb_strpos($a, "あ", 4)); //bool(false)
var_dump(mb_strpos($a, "あ", 5)); //bool(false)

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

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

 

後から検索する(引数2つ)

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

mb_strrpos関数のサンプルです。

<?php
$a = "あいうあいう";
var_dump(mb_strrpos($a, "あ")); //int(3)
var_dump(mb_strrpos($a, "い")); //int(4)
var_dump(mb_strrpos($a, "う")); //int(5)
var_dump(mb_strrpos($a, "あいう")); //int(3)
var_dump(mb_strrpos($a, "ん")); //bool(false)

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

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

 

後から検索する+開始位置を指定(引数3つ)

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

<?php
$a = "あいうあいう";
var_dump(mb_strrpos($a, "あ", 5)); //bool(false)
var_dump(mb_strrpos($a, "あ", 4)); //bool(false)
var_dump(mb_strrpos($a, "あ", 3)); //int(3)
var_dump(mb_strrpos($a, "あ", 2)); //int(3)
var_dump(mb_strrpos($a, "あ", 1)); //int(3)
var_dump(mb_strrpos($a, "あ", 0)); //int(3)

3行目の引数は5で対象の文字列は(う)です。文字(あ)はないのでfalseです。
4行目の引数は4で対象の文字列は(いう)です。文字(あ)はないのでfalseです。
5行目の引数は3で対象の文字列は(あいう)です。位置の3が返ります。
6行目の引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
7行目の引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
8行目の引数は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)

△上に戻る