split(PHP 3, PHP 4) split - делает из строки массив с помощью регулярного выражения. Описаниеarray split (string pattern, string string [, int limit])
Возвращает массив строк, каждая из которых является подстрокой строки string и образована путём разделения строки по границам, образованным патэрном pattern регулярного выражения. Если limit установлен, возвращённый массив будет содержать максимум limit элементов с последним элементом, содержащим остаток строки string. Если возникла ошибка, split() возвращает FALSE. Для того чтобы разделить первые четыре поля строчки /etc/passwd:
Для разбора данных, которые могут быть разграничены слэшами, точками или дефисами:
Заметьте, что pattern чувствителен к регистру. Если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений. Для тех, кто ищет способ эмулировать Perl'овское поведение @chars = split('', $str), рекомендуем посмотреть примеры для preg_split(). Обратите, пожалуйста, внимание, что pattern это регулярное выражение. Если вы хотите разделить на любом из символов, имеющих в регулярных выражениях специальное значение, вам нужно сначала мнемонизировать/escape эти символы. Если вам кажется, что split() (или любая другая regex-функция) делает нечто странное, прочтите файл regex.7, включённый в поддиректорию regex/ дистрибутива PHP. Он имеет формат manpage, поэтому вам понадобится что-нибудь сделать со строками man /usr/local/src/regex/regex.7, чтобы прочесть его. См. также preg_split(), spliti(), explode(), implode(), chunk_split() и wordwrap(). |
||||||||||
|
||||||||||
Однократные субпатэрны не являются захватывающими субпатэрнами. Простые случаи, вроде вышеприведённого примера, можно представить как максималистское построение, которое поглощает всё, что может. Так, в то время как \d+ и \d+? подготовлены так, чтобы уточнять число цифр для совпадения с ними, чтобы совпала остальная часть патэрна, (?>\d+) может совпадать только с полной последовательностью цифр.
Эта конструкция, разумеется, может содержать произвольно усложнённые субпатэрны и может вкладываться.
Однократные субпатэрны можно использовать в сочетании с утверждениями назад
для специфицирования эффективного совпадения в конце строки-субъекта. Рассмотрим
такой простой патэрн:
abcd$
применённый к длинной строке, с которой он не совпадает. Поскольку совпадение
выполняется слева направо, PCRE будет искать каждую "a" в субъекте, а затем
посмотрит, что из последующего совпадает с остатком патэрна. Если патэрн специфицирован
так:
^.*abcd$
| |