strtok

関数の概要

PHPの strtok 関数は、文字列を指定した区切り文字(デリミタ)ごとに分割し、トークン(小さな文字列単位)として順に取得するための関数です。主に文字列を単語や要素単位に分割して処理したい場合に使われ、for文やwhile文などのループ内で繰り返しトークンを取得する用途で便利です。

パラメータの説明

  • string (必須) – 解析する対象の文字列。1回目の呼び出し時に渡す必要があります。
  • token (必須) – 区切り文字。これを基準に文字列をトークンに分割します。複数の文字を指定すると、それぞれの文字が区切り文字として扱われます。

戻り値

strtok は現在のトークンを返します。初回呼び出し時は最初のトークンを返し、次回以降は同じ関数を区切り文字なしで呼ぶことで、次のトークンを返します。トークンが無くなった場合は false を返します。

使用例

基本的な使い方

$str = "apple,banana,grape";
$token = strtok($str, ",");
while ($token !== false) {
    echo $token . "n";
    $token = strtok(",");
}

この例ではカンマ「,」を区切り文字として文字列を分割し、whileループで順番にトークン(単語)を出力しています。結果は3行で「apple」「banana」「grape」と表示されます。

複数の区切り文字を使う

$text = "Tom;Jerry,Spike:Tyke";
$token = strtok($text, ",;:");
while ($token !== false) {
    echo $token . "n";
    $token = strtok(",;:");
}

この例ではカンマ「,」、セミコロン「;」、コロン「:」の3つを区切り文字に指定しており、それらのいずれかで文字列を分割します。結果はそれぞれの名前が1行ずつ表示されます。

複雑な文字列の分割文字としてスペースも含める

$data = "PHP is great; isn't it?";
$token = strtok($data, " ;'");
while ($token !== false) {
    echo $token . "n";
    $token = strtok(" ;'");
}

この例ではスペース「 」とセミコロン「;」、シングルクォート「’」の3種類の区切り文字で文字列を分割しています。英語の文章を単語単位に分割する際にも使えます。

関連する関数

  • explode() – 指定した文字列(区切り文字)で文字列を配列に分割する関数。strtokより使いやすい場面もあります。
  • preg_split() – 正規表現を使って文字列を分割する関数。複雑な区切り条件に対応できます。
  • str_split() – 文字列を指定した長さごとに分割し配列にする関数。

まとめ

strtok は文字列をトークンに分割して順に取得できる便利な関数です。特に繰り返し処理の中で順番に区切られた要素を処理したい時に役立ちます。複数種類の区切り文字を設定できるため柔軟な文字列分割が可能です。とはいえ、全てのトークンを一度に配列として取得したい場合は explode() がより直感的に使えます。用途に合わせて使い分けましょう。