Форум → Программирование → PHP для идиотов → Вопрос по регуляркам
Вопрос по регуляркам
-
Здраствуйте.
Вопрос такой: как можно разбить строку "00000/11111/22222/33333/44444/55555"
в массив {
[0] => 00000
[1] => 11111
[2] => 22222
[3] => 33333
[4] => 44444
[5] => 55555
}
split ("/", "00000/11111/22222/33333/44444/55555") работает, но split ("/", "00000") дает пустой массив.
Попробовал написать регулярку но и она выдает {
[0] => 00000
[1] => 22222
[2] => 44444
} то есть вычисляет через раз.
прошу подсказать работающую регулярку, если конечно она вообще возможна.
PS. Вопрос имеет для меня чисто академический интерес, на будущее. Я обошел это затруднение через обработку исключений. -
-
-
Май 19, 2008, 12:55 п.п., спустя 5 минут 31 секунду
sap, не-не-не вопрос был про регулярку, я про регулярку ответил -
Май 19, 2008, 1:18 п.п., спустя 22 минуты 49 секунд
CTAPbIu_MABP, ну про регулярку да, но експлодом лучше =) -
Май 19, 2008, 1:20 п.п., спустя 2 минуты 5 секунд
а что если вот такpreg_split("~\/~", $str);
Спасибо, работает. Однако я ни разу не встречал значка ~ в мануалах. Не подскажете ссылку или литературу где про него можно прочитать? -
Май 19, 2008, 1:25 п.п., спустя 5 минут 3 секунды
CTAPbIu_MABP, ну про регулярку да, но експлодом лучше =)
Експлод как и сплит, в случае, если не происходит разбитие строки [explode ("/", "00000") ] выдает пустой массив, что требует прописывание этого исключения в коде. -
Май 19, 2008, 1:28 п.п., спустя 2 минуты 55 секунд
В данном случае сам по себе значок ничего не означает, кроме того, что любая регулярка обязана начинаться и заканчиваться одним и тем же символом.
Спасибо, работает. Однако я ни разу не встречал значка ~ в мануалах. Не подскажете ссылку или литературу где про него можно прочитать? -
Май 19, 2008, 2:32 п.п., спустя 1 час 3 минуты 54 секунды
Спасибо, работает. Однако я ни разу не встречал значка ~ в мануалах. Не подскажете ссылку или литературу где про него можно прочитать?
В общем AlexB, говорит правду, сам значок ничего не означает кроме того что ограничивает регулярку, я бы мог написать вот такpreg_split("/\//", $str);
но было бы просто нечитаемо
Я к сожалению не могу найти ссылку на мануал но по моему регулярные выражения могут ограничиваться парой любых (не уверен только спец символов или вообще любых включая русский, я не экспериментировал) символов причем если эти символы встречаться в строке они должны быть отслешены то есть
Тильда
~\~~ -
Май 19, 2008, 4:59 п.п., спустя 2 часа 26 минут 57 секунд
по моему регулярные выражения могут ограничиваться парой любых (не уверен только спец символов или вообще любых включая русский, я не экспериментировал)
На счет русского не знаю, но вообще любых. -
Май 19, 2008, 5:02 п.п., спустя 3 минуты 3 секунды
но вообще любых
любых конечно хорошо но представь что ты выбрал "i" и тебе надо модификатор "i", что должен делать компилятор?! -
Май 19, 2008, 6:58 п.п., спустя 1 час 55 минут 31 секунду
Интерпретатор сказалWarning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash
Так что все же не любые символы могут быть ограничителем.
Пожалуйста, авторизуйтесь, чтобы написать комментарий!