(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
.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.