-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
PHP: помогите с регулярным выражением
Есть строки
1)тартатаА 2)трататаБ
3)трататаВ
Нужно получить массив
[0]= тартатаА
[1]= трататаБ
[2]= трататаВ
выражение (?<=\d+\)\s*).* выдает
[0]= тартатаА 2)трататаБ
[1]= трататаВ
|
Prisoner |
01-08-2005 13:06 345109 |
И вам здравствуйте.
Может так:
|
$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.
© OSzone.net 2001-