PHP: помогите с регулярным выражением

Ответить
Аватара пользователя
ams

PHP: помогите с регулярным выражением

Сообщение ams »

Есть строки

1)тартатаА 2)трататаБ

3)трататаВ



Нужно получить массив

[0]= тартатаА

[1]= трататаБ

[2]= трататаВ



выражение (?
Аватара пользователя
Prisoner

Re: PHP: помогите с регулярным выражением

Сообщение Prisoner »

И вам здравствуйте.

Может так:

Код:
Аватара пользователя
ams

Re: PHP: помогите с регулярным выражением

Сообщение ams »

$text = "1) один 1 тратата 2) два 2 3) три 3 ";

echo $text . "
";

$answ = preg_split("/\d+\)/", $text);

print_r($answ);

--- результат

1) один 1 тратата 2) два 2 3) три 3

Array ( [0] => [1] => один 1 тратата [2] => два 2 [3] => три 3 )

--- вопрос

откуда взялся 0-ой элемент массива?
Аватара пользователя
Prisoner

Re: PHP: помогите с регулярным выражением

Сообщение Prisoner »

Сплиту не важно, что ничего не было до первого участка текста соответствующему паттерну. В preg_split PHP-реализации есть флаги, их и возъюзайте:


Цитата:



array preg_split (string pattern, string subject [, int limit [, int flags]])



Примечание: параметр flags был введён в PHP 4 Beta 3.



Возвращает массив, содержащий подстроки из subject, разделённого по границам совпадений с pattern.



Если limit специфицирован, то будет возвращены только подстроки до limit, а если limit равен -1, это означает "нет ограничения", что используется для специфицирования flags.



flags может быть комбинацией следующих флагов (с помощью битовой операции |):



PREG_SPLIT_NO_EMPTY

Если это флаг установлен, только непустые участки возвращаются функцией preg_split().



PREG_SPLIT_DELIM_CAPTURE

Если это флаг установлен, выражение в скобках в патэрне ограничителя будет захвачено и возвращено. Этот флаг был введён в 4.0.5.



PREG_SPLIT_OFFSET_CAPTURE

Если это флаг установлен, для каждого найденного совпадения будет также возвращено смещение дополнительной строки. Заметьте, что это изменит return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки в смещении 0 и её строкового смещения в subject - в смещении1. Этот флаг доступен, начиная с PHP 4.3.0.
Ответить

Вернуться в «Вебмастеру»