(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Разбивает строку на токены
Альтернативная сигнатура (не поддерживается с именованными аргументами):
Функция strtok() разбивает строку
string на подстроки, или токены, при этом
каждый токен отделяется любым символом из параметра token.
Функция могла бы, например, разбить, или токенизировать, строку вроде «This is an example string»
на отдельные слова символом пробела как token-разделителем.
Заметьте, что аргумент string передают только при первом вызове
функции. Очередным вызовам требуется только аргумент token,
поскольку функция сохраняет исходную строку и запоминает позицию в ней
между вызовами. Чтобы начать заново или токенизировать новую строку string,
функцию просто вызывают с аргументом string, чтобы инициализировать строку.
Обратите внимание, что в параметре token разрешается указывать больше одного разделителя.
Функция токенизирует строку, когда встречает любой из символов аргумента (token).
Замечание:
Функция ведёт себя иначе, чем можно было бы ожидать после знакомства с функцией explode(). Во-первых, функция считает одним разделителем последовательность из двух или более смежных символов
tokenв строке, которую разбирает. Кроме этого, функция игнорирует значенияtokenв начале или конце строки. При обработке строки«;aaa;;bbb;»последовательные вызовы функции strtok() с символом«;»в качестве значения параметраtokenвернут строки «aaa» и «bbb», а затемfalse. В результате эта функция разобьёт строку только на два элемента, а вызовexplode(";", $string)вернёт массив из 5 элементов.
stringСтрока (string), разбиваемая на подстроки (токены).
token
Разделитель строки string.
Функция возвращает токен в виде строки (string) или false, если токенов больше нет.
| Версия | Описание |
|---|---|
| 8.3.0 |
Функция теперь выдаёт ошибку уровня E_WARNING,
когда параметр token не указали.
|
Пример #1 Пример использования функции strtok()
<?php
$string = "This is\tan example\nstring";
/* Указываем пробел, табуляцию и перевод строки как символы разбора на токены */
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}
?>
Пример #2 Способ обработки пустых подстрок функцией strtok()
<?php
$first_token = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>Результат выполнения приведённого примера:
string(9) "something"
bool(false)
Пример #3 Отличие функции strtok() от функции 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.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.