(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Разбивает строку на токены
$string
, string $token
): string|falseАльтернативная сигнатура (не поддерживается с именованными аргументами):
$token
): string|false
strtok() разбивает строку
string
на подстроки (токены), используя
в качестве разделителей символы из token
.
Например, строку "This is an example string" можно разбить на
отдельные слова, используя пробел в качестве разделителя (token
).
Заметьте, что исходная строка (string
) передаётся только при первом вызове
этой функции. Последующим вызовам передаются только разделители (token
), так
как эта функция сохраняет исходную строку и запоминает позицию в этой
строке между вызовами. Для работы с новой строкой (string
) нужно снова вызвать
функцию с двумя аргументами. Обратите внимание, что в параметре
token
можно использовать несколько разделителей. Строка будет
делиться по любому найденному символу, присутствующему в
параметре (token
).
Замечание:
Функция ведёт себя немного иначе, чем можно было бы ожидать, знакомясь с explode(). Во-первых, последовательность из двух или более смежных символов
token
в анализируемой строке считается одним разделителем. Также игнорируетсяtoken
, расположенный в начале или конце строки. Например, если используется строка";aaa;;bbb;"
, последовательные вызовы strtok() с";"
в качествеtoken
вернут строки "aaa" и "bbb", а затемfalse
. В результате строка будет разделена только на два элемента, аexplode(";", $string)
вернёт массив из 5 элементов.
string
Строка (string), разбиваемая на подстроки (токены).
token
Разделитель строки string
.
Токен в виде строки (string) или false
, если токенов больше нет.
Пример #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
, так и значение не типа boolean, которое приводится к false
. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.