Учебник РНР
НазадВперёд

strtok

(PHP 3, PHP 4 )

strtok - лексемизация/Tokenize строки.

Описание

string strtok (string arg1, string arg2)

strtok() разделяет строку (arg1) на небольшие строки (лексемы/tokens), где каждая строка отделена символом из arg2. То есть, если у вас имеется, например, строка "This is an example string", вы можете лексемизировать её на отдельные слова с применением пробела как разделителя.

Пример 1. strtok()

$string = "This is\tan example\nstring";
/* Использовать также символы tab и newline как лексемизирующие символы */
$tok = strtok($string," \n\t");
while ($tok) {
    echo "Word=$tok<br>";
    $tok = strtok(" \n\t");
}

Заметьте, что только первый вызов strtok использует аргумент string. Каждый последующий вызов strtok только использует лексему и отслеживает таким образом, где он находится в текущей строке. Для старта сначала или для лексемизации новой строки вы просто вызываете strtok снова с аргументом string для его инициализации. Заметьте, что вы можете поместить несколько лексем в параметр token. Строка будет лексемизироваться, если найден какой-нибудь один из символов из этого аргумента.

Поведение в случае обнаружения пустой части было изменено в PHP 4.1.0. Старое поведение - возвращалась пустая строка, новое, корректное - эта часть строки просто пропускается:

Пример 2. Старое поведение strtok()

$first_token  = strtok('/something', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Выводится:
    string(0) ""
    string(9) "something"
*/

Пример 3. Новое поведение strtok()

$first_token  = strtok('/something', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Выводится:
    string(9) "something"
    bool(false)
*/

Имейте также в виду, что ваши лексемы могут быть равны "0". Это даёт FALSE в условных выражениях.

См. также split() и explode().


НазадОглавлениеВперёд
strstrВверхstrtolower