strtok

(PHP 3, PHP 4 )

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 ??? em expressões condicionais.

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