array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.strtok.php', 1 => 'strtok', ), 'up' => array ( 0 => 'ref.strings.php', 1 => 'Функции для работы со строками', ), 'prev' => array ( 0 => 'function.strstr.php', 1 => 'strstr', ), 'next' => array ( 0 => 'function.strtolower.php', 1 => 'strtolower', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/strings/functions/strtok.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Разбивает строку на токены
Альтернативная сигнатура (не поддерживается с именованными аргументами):
Функция 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
.
Версия | Описание |
---|---|
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
.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.