strtok
(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Divide uma string em tokens
Descrição
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.
Note:
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
token
na string é considerado como um único delimitador. Além disso, umtoken
situado no início ou no final da string é ignorado. Por exemplo, se uma string";aaa;;bbb;"
for usada, chamadas sucessivas a strtok() com";"
comotoken
retornaria 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.
Parâmetros
string
-
A string que será dividida em strings menores (tokens).
token
-
O delimitador usado ao dividir a
string
.
Registro de Alterações
Versão | Descrição |
---|---|
8.3.0 |
Agora emite um alerta E_WARNING quando token não for informado.
|
Exemplos
Example #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<br />";
$tok = strtok(" \n\t");
}
?>
Example #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)
Example #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",""]
Notas
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.