(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Tokenize string
Alternative signature (not supported with named arguments):
strtok() splits a string (string
)
into smaller strings (tokens), with each token being delimited by any
character from token
.
That is, if you have a string like "This is an example string" you
could tokenize this string into its individual words by using the
space character as the token
.
Note that only the first call to strtok uses the string
argument.
Every subsequent call to strtok only needs the token
to use, as
it keeps track of where it is in the current string. To start
over, or to tokenize a new string you simply call strtok with the
string
argument again to initialize it. Note that you may put
multiple tokens in the token
parameter. The string will be
tokenized when any one of the characters in the token
argument is
found.
Зауваження:
This function behaves slightly different from what one may expect being familiar with explode(). First, a sequence of two or more contiguous
token
characters in the parsed string is considered to be a single delimiter. Also, atoken
situated at the start or end of the string is ignored. For example, if a string";aaa;;bbb;"
is used, successive calls to strtok() with";"
as atoken
would return strings "aaa" and "bbb", and thenfalse
. As a result, the string will be split into only two elements, whileexplode(";", $string)
would return an array of 5 elements.
string
The string being split up into smaller strings (tokens).
token
The delimiter used when splitting up string
.
Приклад #1 strtok() example
<?php
$string = "This is\tan example\nstring";
/* Use tab and newline as tokenizing characters as well */
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}
?>
Приклад #2 strtok() behavior on empty part found
<?php
$first_token = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>
Поданий вище приклад виведе:
string(9) "something" bool(false)
Приклад #3 The difference between strtok() and 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";
Поданий вище приклад виведе:
["aaa","bbb"] ["","aaa","","bbb",""]
Ця функція може
повертати як логічне false
, так і не логічне значення, яке прирівнюється до
false
. Докладніше про це описано в розділі Логічні типи даних. Для перевірки
значення, яке повертає ця функція, використовується оператор ===.