今日の人気記事

  1. 10進数 ⇔ 2進数変換 - decbin()、bindec()
  2. 比較演算子 - if、for、while の条件分岐に

文字列が最初に現れる場所を取得 - 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)

文字列 の人気記事

  1. 文字列の長さを取得 - strlen()、mb_strlen()
  2. バイナリデータを16進数に変換 - bin2hex()
  3. ASCIIコードを特定の文字に変換 - chr()
  4. 文字列の最初の文字を大文字 / 小文字に変換 - ucfirst()、lcfirst()
  5. 指定した文字列以降の文字列を取得 - strstr()、strchr() - mb_strstr()

関連記事(一部広告含む)