【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 を返します。