Forum und email

strtok

(PHP 4, PHP 5)

strtok — Verdeelt string in tokens

Beschrijving

string strtok ( string $arg1 , string $arg2 )

strtok() wordt gebruikt om een string (arg1 ) in kortere strings (tokens) te verdelen, waarvan elk token gescheiden wordt elk teken uit arg2 . Bijvoorbeeld als je een string hebt als "Dit is een voorbeeld string" zou je deze kunnen verdelen in individuele woorden door de spatie als token te geven.

Example#1 strtok() voorbeeld

$string = "Dit is\teen voorbeeld\nstring";
/* Gebruik ook tabs en newlines als verdeeltekens */
$tok = strtok ($string, " \n\t");
while ($tok) {
    echo "Word=$tok<br>";
    $tok = strtok (" ");
}

Merk op dat alleen de eerste aanroep naar strtok het string argument gebruikt. Bij elke volgende aanroep heeft strtok alleen het token nodig, omdat het bijhoudt waar men gebleven is in de string. Om opnieuw te beginnen of om een nieuwe string te verdelen in tokens roep je strtok simpelweg aan met het string argument om te initialiseren. Ja kan overigens meerdere tokens in de token parameter megeven. De string zal verdeeld worden wanneer ook maar 1 karakter in het argument gevonden is.

Het resultaat als een leeg gedeelte werd gevonden is veranderd in PHP 4.1.0. Het oude gedrag was dat dan een lege string terug werd gegeven, maar het nieuwe, juiste gedrag negeert gewoon dat lege gedeelte. The behavior when an empty part was found changed with PHP 4.1.0. The old behavior returned an empty string, while the new, correct, behavior simply skips the part of the string:

Example#2 Oude strtok() gedrag

$first_token  = strtok('/iets', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Output:
    string(0) ""
    string(4) "iets"
*/

Example#3 Nieuwe strtok() gedrag

$first_token  = strtok('/iets', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Output:
    string(4) "iets"
    bool(false)
*/

Wees trouwens voorzichtig met gevallen wanneer je tokens gelijk zijn aan "0". In conditionele expressies zal dit naar FALSE evalueren.

Zie ook split() en explode().