strtok

(PHP 3, PHP 4 , PHP 5)

strtok -- Tokeniza uma string

Descrição

string strtok ( string arg1, string arg2 )

strtok() divide uma string (arg1) em strings menores (tokens), com cada token sendo delimitado por qualquer caractere de arg2. Quer dizer que, se você tem uma string como "Esta é uma string de exemplo" você poderia "tokenizá-la" em suas palavras individuais usando o caractere de espaço como delimitador do token.

Exemplo 1. strtok() exemplo

<?php
$string
= "This is\tan example\nstring";
/* Use tab e newline como caractere delimitador, que funciona bem  */
$tok = strtok($string," \n\t");
while (
$tok) {
    echo
"Word=$tok<br>";
    
$tok = strtok(" \n\t");
}
?>

Note que só a primeira chamada a strtok usa o argumento string. Cada chamada subseqüente a strtok só precisa do delimitador a ser usado, já que ele mantém o caminho de onde ele está na string atual. Para iniciar novamente, ou tokenizar uma nova string você simplesmente chama strtok com o argumento de string novamente para inicializá-la. Veja que você pode por múltiplos delimitadores como parâmetro. A string será tokenizada quando um dos caracteres no argumento são encontrados.

O comportamento quando uma parte vazia foi encontrada mudou com o PHP 4.1.0. O antigo comportamento retornava uma string vazia, enquanto a nova, a correta, simplesmente pula a parte da string:

Exemplo 2. Comportamento antigo de strtok()

<?php
$first_token  
= strtok('/something', '/');
$second_token = strtok('/');
var_dump ($first_token, $second_token);

/* Output:
    string(0) ""
    string(9) "something"
*/    
?>

Exemplo 3. Comportamento Novo strtok()

<?php
$first_token  
= strtok('/something', '/');
$second_token = strtok('/');
var_dump ($first_token, $second_token);

/* Output:
    string(9) "something"
    bool(false)
*/    
?>

Também tome cuidado para que seus tokens não sejam iguais a "0". Isto avalia como FALSE em expressões condicionais.

Veja também split() e explode().