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

作成日: 更新日:

strtok関数は、指定された文字列を特定の区切り文字で分割し、その部分文字列(トークン)を順次取得する関数です。この関数は、ある文字列の中から意味のある単語やフレーズを抽出する際に役立ちます。

最初の呼び出しでは、分割したい元の文字列と、区切り文字として使用する文字を指定します。区切り文字は1文字だけでなく、複数の文字を組み合わせて指定することも可能です。例えば、「,」「;」「.」といった複数の文字を区切り文字として一度に指定できます。この最初の呼び出しによって、関数は内部で現在の処理位置を記憶します。

2回目以降のstrtok関数の呼び出しでは、元の文字列を再度指定する必要はなく、区切り文字のみを指定します。これにより、関数は前回の処理位置から残りの文字列を分割し、次のトークンを返します。すべての部分文字列が取得され、それ以上分割できる部分がなくなった場合、この関数はfalseを返します。

この関数は元の文字列を直接変更することはありません。また、連続する区切り文字は1つの区切り文字として扱われるため、例えば「word,,next」という文字列を「,」で分割した場合、「word」と「next」の間に空のトークンは生成されません。日本語のようなマルチバイト文字を含む文字列を扱う場合は、期待通りの動作をしないことがあるため、mb_strtokのようなマルチバイトセーフな関数を使用することを推奨します。

基本的な使い方

構文(syntax)

<?php
$string = "apple,banana,orange";
$token = strtok($string, ","); // 最初のトークンを取得

while ($token !== false) {
    echo $token . PHP_EOL;
    $token = strtok(","); // 次のトークンを取得
}
?>

引数(parameters)

string $string, string $token

  • string $string: 分割したい元の文字列
  • string $token: 区切り文字として使用する文字列

戻り値(return)

string|false

指定された文字列 $str を、区切り文字 $token によって分割し、分割された文字列の次の部分を返します。 区切り文字が見つからない場合、または文字列の終わりに達した場合は false を返します。

【PHP8.x】strtok関数の使い方 | いっしー@Webエンジニア