(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Divide uma string em tokens
Assinatura alternativa (não suportada com argumentos nomeados):
strtok() divide a string
em partes menores (tokens), com cada token sendo delimitado pelo
caractere definido em token.
Isto é, em uma string como "Este é um texto de exemplo", pode-se
dividir esta string em palavras individuais usando-se o
caractere de espaço como o token.
Observe que somente a primeira chamada a strtok usa o argumento string.
Cada chamada subsequente a strtok precisará apenas do parâmetro token, já
que ela guarda a posição atual na string. Para reiniciar,
ou para dividir uma nova string em tokens, deve-se simplesmente chamar strtok com o
argumento string novamente. Observe que pode-se incluir
múltiplos tokens no parâmetro token. A string será
dividida sempre que qualquer dos caracteres presentes no argumento token for
encontrado.
Nota:
Esta função comporta-se de maneira um pouco diferente do que o esperado quando se está familiar com explode(). Primeiramente uma sequência de dois ou mais caracteres contíguos de
tokenna string é considerado como um único delimitador. Além disso, umtokensituado no início ou no final da string é ignorado. Por exemplo, se uma string";aaa;;bbb;"for usada, chamadas sucessivas a strtok() com";"comotokenretornaria as strings "aaa" e "bbb", e depoisfalse. Como resultado, a string seria dividida em apenas dois elementos, enquanto queexplode(";", $string)retornaria um array com 5 elementos.
stringA string que será dividida em strings menores (tokens).
token
O delimitador usado ao dividir a string.
| Versão | Descrição |
|---|---|
| 8.3.0 |
Agora emite um alerta E_WARNING quando token não for informado.
|
Exemplo #1 Exemplo de strtok()
<?php
$string = "Este é\tum texto de\nexemplo";
/* Pode-se usar também tabulação e nova linha como caracteres de divisão */
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Palavra={$tok}\n";
$tok = strtok(" \n\t");
}
?>
Exemplo #2 Comportamento de strtok() com uma parte vazia encontrada
<?php
$first_token = strtok('/palavra', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>O exemplo acima produzirá:
string(7) "palavra"
bool(false)
Exemplo #3 A diferença entre strtok() e explode()
<?php
$string = ";aaa;;bbb;";
$parts = [];
$tok = strtok($string, ";");
while ($tok !== false) {
$parts[] = $tok;
$tok = strtok(";");
}
echo json_encode($parts),"\n";
$parts = explode(";", $string);
echo json_encode($parts),"\n";O exemplo acima produzirá:
["aaa","bbb"] ["","aaa","","bbb",""]
Esta função pode
retornar o valor booleano false, mas também pode retornar um valor não booleano que pode ser
avaliado como false. Leia a seção sobre Booleanos para mais
informações. Use o operador
=== para testar o valor retornado por esta
função.