Примеры > Ссылки, адреса > Парсинг сложных 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.

