Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регулярным выражением, Нужно разделить URL 
:(
    Опции темы
kanaris
Дата 17.5.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 16.2.2008

Репутация: нет
Всего: -1



Нужно разделить URL'ы следующих видов:

elkg/sadg/ewn/gh_er/ew/dev/core/urltest/2007/02/03/sdrgkjl.html
elkg/sadg/ewn/gh_er/ew/dev/core/urltest/2007/02/03/666

на составляющие:

1) elkg/sadg/ewn/gh_er/ew/dev/core/urltest/ (путь, каждое звено может состоять из больших и маленьких лат. букв, _ и -, звеньев может быть от нуля до +бесконечности)
2) 2007/02/03/ (дата. ее может вообще не быть, может состоять из года; года и месяца; года, месяца и числа)
3) sdrgkjl.html (файл, может быть не указан, имя состоит из a-z, A-Z, 0-9, -, _, а расширение только html)
4) 666 (файл без расширения, якобы номер страницы, представляет собой только число. элемент может не встречаться)

должно работать с урлами любого вида:

elkg/sadg/ewn/gh_er/ew/dev/
core/urltest/
urltest/2007/02/
sdfsdf/sdrgkjl.html
core/urltest/25

и тд.

Пробовал следующее:

Код

$url='elkg/sadg/ewn/gh_er/ew/dev/core/urltest/2007/02/03/sdrgkjl.html';

preg_match('|([a-z_\-\.]+[\/])*?(\d{2,4}[\/]){1,3}?([\d]*)([a-z_-]+\.[a-z]{3,4})|i',$url,$out);

echo '<pre>'.print_r($out,true).'</pre>';
echo $url;


выводит вот что:

Код

Array
(
    [0] => urltest/2007/02/03/sdrgkjl.htm
    [1] => urltest/
    [2] => 03/
    [3] => 
    [4] => sdrgkjl.htm
)


Не правильно в общем! Кто поможет?
PM MAIL   Вверх
amg
Дата 19.5.2008, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Код
$re = '/^((?:[a-z._-]+\/)*)((?:\d{2,4}\/){0,3})((?:[\w-]+\.html)|(?:\d+))?$/i';
preg_match($re,$url,$out);


PM MAIL   Вверх
skyboy
Дата 19.5.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



воспользуйся parse_url или explode
PM MAIL   Вверх
Feldmarschall
Дата 19.5.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



skyboy, ни та, ни другая функция ему не поможет. первая разве что поможет отделить файл от остального, но не более. а вторая просто разобьет. а нужно-то определить тип ссылки - с датой или без, и так далее.
другое дело, что это ж надо сидеть и кропотливо составлять и отлаживать паттерн. для себя я считаю, что не могу перекладывать эту работу на других людей, но каждый для себя сам решает, разумеется.
PM   Вверх
skyboy
Дата 19.5.2008, 15:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Цитата(Feldmarschall @  19.5.2008,  12:10 Найти цитируемый пост)
а вторая просто разобьет

да, я не подумал, что это может быть нужно для mod_rewrite. а сразу мне подумалось, что выносить логику типа "месяц искать только если указан год, в противном случае считать частью пути" в регулярку - немного мудренно. если же речь о mod_rewrite, то само собой, не подходит.
Цитата(Feldmarschall @  19.5.2008,  12:10 Найти цитируемый пост)
 для себя я считаю, что не могу перекладывать эту работу на других людей

полностью согласен.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0753 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.