文字列が最初に現れる場所を取得 - strpos()、mb_strpos()
当ページのリンクには広告が含まれています。
Webプログラミング言語PHPで、文字列内に指定した文字列が最初に現れる場所を取得するstrpos関数、マルチバイト版のmb_strpos関数を紹介します。
strpos関数
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
文字列内に指定した文字列が最初に現れる場所を取得します。
引数 $haystack 検索対象の文字列を指定します。 $needle 検索する文字列を指定します。 $offset 文字列検索開始位置を指定します。省略した場合は文字列の最初「0」から検索します。
返り値 指定した文字列が見つかった場合は最初に現れる場所を、 失敗した場合は、falseを返します。
ref. » 文字列が最後に現れる場所を取得 - strrpos、mb_strrpos
サンプルコード
文字列内から指定した文字列が最初に現れる場所を取得するサンプルコードです。
strpos( 検索対象の文字列, 検索する文字列 )
<?php /* 文字列が最初に現れる場所を取得 */ $haystack = "abcdefgd"; var_dump(strpos($haystack, "d")); var_dump(strpos($haystack, "x")); ?>
実行結果です。文字列内から指定した文字列が最初に現れる場所が取得されています。失敗した場合は、falseを返します。日本語を検索する場合は、マルチバイト版のmb_strpos関数を使いましょう(後述)。
int(3) bool(false)
mb_strpos関数
int mb_strpos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding ]] ) 文字列内に指定した文字列が最初に現れる場所を取得します。 strpos関数のマルチバイト版です。
引数 $haystack 検索対象の文字列を指定します。 $needle 検索する文字列を指定します。 $offset 文字列検索開始位置を指定します。省略した場合は文字列の最初「0」から検索します。 $encoding エンコーディングを指定します。 エンコーディングの指定を省略した場合は、 内部エンコーディング†を使用します。
返り値
指定した文字列が見つかった場合は最初に現れる場所を、失敗した場合は、falseを返します。
†内部エンコーディングの設定はこちら » 日本語環境の設定 - mbstring。
サンプルコード
文字列内から指定した文字列が最初に現れる場所を取得するマルチバイト版のサンプルコードです。
mb_strpos( 検索対象の文字列, 検索する文字列 )
<?php /* マルチバイト文字列が最初に現れる場所を取得 */ $haystack = "日本語の文字列を検索。日本語検索。"; var_dump(mb_strpos($haystack, "文")); var_dump(mb_strpos($haystack, "検")); var_dump(mb_strpos($haystack, "国")); ?>
実行結果です。日本語の文字列内から指定した文字列が最初に現れる場所が取得されています。失敗した場合は、falseを返します。
int(4) int(8) bool(false)