(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Divide una cadena en segmentos
Firma alternativa (no soportada con argumentos nombrados):
strtok() divide la cadena string
en segmentos, cada segmento está delimitado por token
.
Por ejemplo, si se tiene una cadena como
"Este es un buen ejemplo"
, se pueden extraer
las diferentes palabras utilizando el espacio como token
.
Tenga en cuenta que solo la primera llamada a strtok() utiliza
el argumento string
.
Todas las llamadas posteriores a strtok() requieren únicamente
el token
a utilizar, ya que sabe dónde se encuentra
en la cadena actual.
Para reiniciar o dividir una nueva cadena, simplemente se puede
llamar a strtok() con el parámetro string
nuevamente para inicializarlo. Cabe señalar que es posible incluir
varios tokens en el parámetro token
.
La cadena string
se dividirá tan pronto como se encuentre
uno de los caracteres del argumento token
.
Nota:
Esta función se comporta de manera ligeramente diferente a lo que se podría esperar al estar familiarizado con explode(). En primer lugar, una secuencia de dos o más caracteres
token
contiguos en la cadena analizada se considera como un único delimitador. Además, untoken
situado al inicio o al final de la cadena es ignorado. Por ejemplo, si la cadena";aaa;;bbb;"
es utilizada, las llamadas sucesivas a strtok() con";"
comotoken
devolverán las cadenas "aaa" y "bbb", y luegofalse
. Por lo tanto, la cadena se dividirá simplemente en dos elementos, mientras queexplode(";", $string)
devolvería un array de 5 elementos.
string
La cadena a dividir en varias cadenas de menor tamaño (tokens).
token
El delimitador utilizado para dividir string
.
Versión | Descripción |
---|---|
8.3.0 |
Ahora emite un E_WARNING cuando el token no es proporcionado.
|
Ejemplo #1 Ejemplo con strtok()
<?php
$string = "This is\tan example\nstring";
// Utilice también las nuevas líneas y las tabulaciones
// como separador de palabras
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Word={$tok}\n";
$tok = strtok(" \n\t");
}
?>
Ejemplo #2 Comportamiento de strtok() al encontrar una parte vacía
<?php
$first_token = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>
El resultado del ejemplo sería:
string(9) "something" bool(false)
Ejemplo #3 La diferencia entre strtok() y 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";
El resultado del ejemplo sería:
["aaa","bbb"] ["","aaa","","bbb",""]
Esta función puede
devolver el valor booleano false
, pero también puede devolver un valor no booleano que se
evalúa como false
. Por favor lea la sección sobre Booleanos para más
información. Use el operador
=== para comprobar el valor devuelto por esta
función.