Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   PHP: помогите с регулярным выражением (http://forum.oszone.net/showthread.php?t=52237)

ams 01-08-2005 12:00 345082

PHP: помогите с регулярным выражением
 
Есть строки
1)тартатаА 2)трататаБ
3)трататаВ

Нужно получить массив
[0]= тартатаА
[1]= трататаБ
[2]= трататаВ

выражение (?<=\d+\)\s*).* выдает
[0]= тартатаА 2)трататаБ
[1]= трататаВ

Prisoner 01-08-2005 13:06 345109

И вам здравствуйте.
Может так:
Код:

(?<=\d+\)\s*)\w+

ams 01-08-2005 13:22 345115

$text = "1) один 1 тратата 2) два 2 3) три 3 ";
echo $text . "<br>";
$answ = preg_split("/\d+\)/", $text);
print_r($answ);
--- результат
1) один 1 тратата 2) два 2 3) три 3
Array ( [0] => [1] => один 1 тратата [2] => два 2 [3] => три 3 )
--- вопрос
откуда взялся 0-ой элемент массива?

Prisoner 01-08-2005 15:00 345151

Сплиту не важно, что ничего не было до первого участка текста соответствующему паттерну. В 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.


Время: 14:30.

Время: 14:30.
© OSzone.net 2001-