strtok

(PHP 4, PHP 5, PHP 7, PHP 8)

strtokРазбивает строку на токены

Описание

strtok(string $string, string $token): string|false

Альтернативная сигнатура (не поддерживается с именованными аргументами):

strtok(string $token): string|false

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

Смотрите также

  • explode() - Разбивает строку разделителем