【PHP8.x】strpbrk関数の使い方

strpbrk関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

strpbrk関数は、指定された文字列の中から、特定の文字リストに含まれる文字のいずれかが最初に現れる場所を探し、その文字から元の文字列の最後までを返す関数です。

この関数は二つの引数を取ります。一つ目の引数であるhaystackは検索対象となる元の文字列で、二つ目の引数であるchar_listは検索したい文字をまとめたリストです。char_listには複数の文字を含めることができ、strpbrk関数は、haystack内でchar_listに含まれる文字のどれか一つでも最初に見つかれば、その文字からhaystackの残りの部分を結果として返します。

もしhaystackのどこにもchar_listに含まれる文字が全く見つからなかった場合は、この関数はブール値のfalseを返します。そのため、関数が返す結果を利用する際には、文字が見つからなかった場合のfalseという戻り値を適切に処理するよう注意が必要です。

例えば、ある文字列の中に特定の区切り文字や特殊文字が含まれているかを確認し、その文字から後ろの内容を取り出したい場合などに、この関数は非常に便利に利用できます。特定の条件に合致する文字を効率的に探し出す際に役立つ関数です。

構文(syntax)

1<?php
2$haystack = "Welcome to PHP programming.";
3$characters = "oe"; // 'o' または 'e' のいずれかが最初に見つかる場所から最後までを取り出す
4
5$result = strpbrk($haystack, $characters);
6
7if ($result !== false) {
8    echo $result;
9} else {
10    echo "指定された文字はいずれも見つかりませんでした。";
11}
12?>

引数(parameters)

string $haystack, string $characters

  • string $haystack: 検索対象の文字列
  • string $characters: 検索する文字のセットを指定する文字列

戻り値(return)

string|false

指定された文字セットのいずれかの文字が文字列内に最初に出現する位置から文字列の末尾までの部分文字列を返します。指定された文字セットのいずれの文字も文字列内に見つからなかった場合は、falseを返します。

サンプルコード

PHP strpbrk関数で部分文字列を検索する

1<?php
2
3// strpbrk() 関数は、文字列 ($haystack) の中から、指定された文字セット ($characters) のいずれかの文字が
4// 最初に出現する場所を見つけ、その文字から文字列の終わりまでを返します。
5// どの文字も見つからない場合は false を返します。
6
7// 例1: 指定された文字が文字列内に見つかる場合
8$haystack1 = "Hello, world!";
9$characters1 = "ow"; // 'o' または 'w' を探します。最初に見つかるのは 'o'
10$result1 = strpbrk($haystack1, $characters1);
11echo "例1: 文字列 \"{$haystack1}\" から \"{$characters1}\" を検索\n";
12echo "結果: ";
13var_dump($result1); // 出力: string(9) "o, world!"
14echo "\n";
15
16// 例2: 検索文字が文字列の途中で見つかる場合
17$haystack2 = "PHP is a popular programming language.";
18$characters2 = "agp"; // 'a', 'g', または 'p' を探します。最初に見つかるのは 'p' (popularの'p')
19$result2 = strpbrk($haystack2, $characters2);
20echo "例2: 文字列 \"{$haystack2}\" から \"{$characters2}\" を検索\n";
21echo "結果: ";
22var_dump($result2); // 出力: string(29) "popular programming language."
23echo "\n";
24
25// 例3: 指定された文字が文字列内に見つからない場合
26$haystack3 = "abcdefg";
27$characters3 = "xyz"; // 'x', 'y', 'z' のいずれも文字列内には存在しません
28$result3 = strpbrk($haystack3, $characters3);
29echo "例3: 文字列 \"{$haystack3}\" から \"{$characters3}\" を検索\n";
30echo "結果: ";
31var_dump($result3); // 出力: bool(false)
32echo "\n";
33
34// strpbrk() が false を返した場合の処理例
35echo "--- strpbrk() が false を返した場合の処理 --- \n";
36if ($result3 === false) {
37    echo "例3のメッセージ: 指定された文字セットの文字は文字列内に見つかりませんでした。\n";
38} else {
39    echo "例3のメッセージ: 指定された文字セットの文字が見つかりました: {$result3}\n";
40}
41echo "\n";
42
43// strpbrk() が文字列を返した場合の処理例
44if ($result1 !== false) {
45    echo "例1のメッセージ: 指定された文字セットの文字が見つかりました: {$result1}\n";
46} else {
47    echo "例1のメッセージ: 指定された文字セットの文字は文字列内に見つかりませんでした。\n";
48}
49
50?>

PHPのstrpbrk関数は、ある文字列($haystack)の中から、指定された文字セット($characters)に含まれるいずれかの文字が最初に出現する場所を探し、その文字から元の文字列の終わりまでの部分文字列を返す機能を提供します。

この関数は二つの引数を取ります。最初の引数$haystackには、検索の対象となる文字列を指定します。二番目の引数$charactersには、検索したい文字を複数含んだ文字列を指定します。例えば"ow"と指定すると、'o'または'w'のいずれかが最初に見つかる場所を探します。

検索する文字が見つかった場合、strpbrk関数は、見つかった文字から元の文字列の最後までを新しい文字列として返します。しかし、指定された文字セットのどの文字も$haystack内に見つからなかった場合は、falseを返します。

サンプルコードでは、いくつかの例を通してこの挙動を確認できます。例1と例2では、検索文字が文字列内に見つかるため、その文字から始まる部分文字列が結果として表示されます。一方、例3では、指定された文字"xyz"が文字列"abcdefg"の中に存在しないため、falseが返されます。このfalseという戻り値は、検索が失敗したことを示しますので、プログラムでその後の処理を分岐させる際に利用することが重要です。if ($result === false)のように条件を記述することで、検索結果に応じた適切な処理を行うことができます。

strpbrk()関数は、指定した文字セットのいずれかの文字が文字列内で最初に見つかると、その文字から文字列の終わりまでを返します。一つも該当する文字が見つからなかった場合はfalseを返しますので、戻り値がfalseかどうかをif ($result === false)のように厳密等価演算子(===)で必ず確認し、適切に処理を分岐させてください。そうしないと、予期せぬ動作につながる可能性があります。また、この関数は検索において大文字と小文字を区別します。例えば「A」と「a」は異なる文字として扱われますので、検索文字の指定にはご注意ください。

関連コンテンツ