Ранее в разд. "Поиск в тексте" данной главы был приведен пример извлечения подстрок, разделенных пробелом (см. листинг 4.22). Разбиение строки вручную не всегда является приемлемым, особенно в том случае, когда за один раз следует извлечь большое число подстрок. РНР обладает большим набором функций для разбивки строки на подстроки по определенному символу, которые будут рассмотрены в этом разделе. Первая функция explode () предназначена для разбивки строки по определенному разделителю и имеет следующий синтаксис:
array explode(string separator, string str[, int limit])
Функция возвращает массив строк, каждая из которых соответствует фрагменту исходной строки str, находящемуся между разделителями, определяемыми аргументом separator. Необязательный параметр limit задает максимальное количество элементов в массиве. Оставшаяся (неразделенная) часть будет содержаться в последнем элементе.
Другой функцией, позволяющей разбить строку на подстроки, является strtok(), которая имеет следующий синтаксис:
string strtokfstring str, string separate)
Функция strtoko возвращает строку по частям, а именно возвращает часть строки str до разделителя separate. При последующих вызовах функции возвращается следующая часть до следующего разделителя, и так до конца строки. При первом вызове функция принимает два аргумента: исходную строку str и разделитель separate. Обратите внимание, что при каждом последующем вызове str указывать не следует, иначе будет возвращаться первая часть строки (листинг 4.30).