strchr

関数の概要

PHPのstrchr関数は、指定した文字列内で最初に現れる特定の文字以降の部分文字列を取得するための関数です。この関数は検索した文字そのものを含んだ部分から文字列の末尾までを返します。主に文字列操作の際、指定位置以降の文字列を簡単に取り出したい場合に使われます。

パラメータの説明

  • haystack(string): 対象となる文字列。検索対象の文字列を指定します。
  • needle(string): 検索する文字。文字列の中からこの文字の最初の出現位置以降を取得します。1文字だけを想定していますが、最初の文字が一致すれば文字列も利用可能です。
  • before_needle(bool, オプション): デフォルトは falsetrue を指定すると、検索した文字の直前までの部分文字列を返します。検索文字は含まれません。

戻り値

検索した文字が見つかった場合、その文字以降の部分文字列(または before_needle が真なら直前まで)を返します。見つからなかった場合は false を返します。

使用例

基本的な使い方

<?php
$str = "hello world";
$result = strchr($str, "w");
echo $result;  // 出力: world
?>

「hello world」の中から「w」以降の文字列「world」を取得しています。

検索文字が見つからない場合

<?php
$str = "hello world";
$result = strchr($str, "x");
var_dump($result);  // 出力: bool(false)
?>

検索対象の文字が見つからない場合は false が返ります。

before_needle パラメータの利用

<?php
$str = "email@example.com";
$result = strchr($str, "@", true);
echo $result;  // 出力: email
?>

メールアドレスの「@」より前の部分のみを取得したい場合に便利です。trueを指定すると「@」は含まれません。

文字列で検索文字を指定した例

<?php
$str = "apple banana";
$result = strchr($str, "ban");
echo $result;  // 出力: banana
?>

needleに文字列を指定すると、最初の文字「b」だけが判定されるため、「banana」以降の文字列が返ります。

関連する関数

  • strstr(): strchrとほぼ同じ動作をする、よく使われる文字列検索関数です。
  • strpos(): 指定した文字が文字列の何番目にあるか位置を返します。
  • substr(): 文字列の一部分を切り出す関数で、strchrと組み合わせて使うこともあります。

まとめ

PHPのstrchr関数は、ある文字以降の文字列を簡単に取得したい場合に便利です。メールアドレスのユーザー名部分だけを取り出すなど、実務でも役立つ場面が多くあります。検索文字が見つからない場合は false が返ることや、before_needleパラメータを利用して検索文字の前部分を取得できる点を理解しておくと使いこなせます。関連の strstr() 関数もほぼ同様の動きなので、用途や好みに応じて使い分けましょう。