Примеры  >  Ссылки, адреса  >  Парсинг сложных URL'ов

Нужно средствами PHP распарсить URL следующих видов:

photo/pripyat/
photo/pripyat/666
photo/pripyat/1.html
photo/pripyat/2008/11/09/
video/1
history/hronologija_yadernyh_ispytaniy.html

чтобы получить следующую информацию:

1) video/explosions/ (путь, каждое звено может состоять из больших и маленьких лат. букв, _ и -, звеньев может быть от нуля до +бесконечности)

2) 2008/11/09/ (дата. ее может вообще не быть, может состоять из года; года и месяца; года, месяца и числа, должна быть в конце цепочки директорий)

3) hronologija_yadernyh_ispytaniy.html (файл, может быть не указан, имя состоит из a-z, A-Z, 0-9, -, _, а расширение только html)

4) 666 (файл без расширения, якобы номер страницы, представляет собой только число. элемент может не встречаться)

Предполагается, что все, что идет после знака вопроса удалено (?sort=1order=...).

# Пример в PHP

$url = 'history/hronologija_yadernyh_ispytaniy.html';

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

echo $out[1].'<br/>'; // путь
echo $out[3].'<br/>'; // дата
echo $out[8].'<br/>'; // номер страницы
echo $out[7].'<br/>'; // имя файла

Kanaris, 18.05.2008.

Вернуться к списку

Добавить в закладки