2015-09-27 1 views
0

У меня есть URL: http://domain.com/home/audio/14/1/file.mp3Как поставить подстановочные строку в URL с помощью Regex PHP

Но строки внутри последнего к подкаталоги могут быть различными, например:

http://domain.com/home/audio/142/14/file.mp3 or 
http://domain.com/home/audio/67/424/file.mp3 

Форматирование # суб-каталогов будет одинаковым, но мне нужно иметь возможность получить файл.mp3 независимо от того, что имеет/xx/xx /. Я пытаюсь создать Regex в PHP, чтобы разместить это, какой-то подстановочный знак вместо символов, которые могут быть в этих подкаталогах. Что-то вроде:

http://domain.com/home/audio/[wildcardregexhere]/[wildcardregexhere]/file.mp3

К сожалению, я никогда не делал Regex раньше. Спасибо за помощь.

+0

Непонятно, что вы спрашиваете: хотите ли вы переписать входящие запросы на стороне сервера или ищете какой-то магический URL-адрес для использования на стороне клиента, который каким-то образом пытается использовать все доступные комбинации для загрузки контента? – arkascha

ответ

2

Есть много возможностей, один из которых соответствует всем символам, а не косой чертой /. Как вы это выразите? Как [^\/]*. В скобках вы указываете все символы, которые должны совпадать, но с ^ при запуске вы отменяете список. Таким образом, вы хотите совпадать с чертой (вы должны избегать этого, поэтому мы используем \/ вместо одного /). И со звездочкой мы говорим, что может быть нуль, одно или много символов, кроме слэша, - его подстановочный знак, который вы ищете.

Как будет выглядеть все регулярное выражение?

http:\/\/domain.com\/home\/audio\/[^\/]*\/[^\/]*\/.*\.mp3 

Я думаю, что file может любой матч, так что я использовал .*. В Perl или PHP синтаксис будет как:

/http:\/\/domain.com\/home\/audio\/[^\/]*\/[^\/]*\/.*\.mp3/ 

В Java вы должны двойные кавычки (побег экранирующий символ обратной косой черты \\).

Удачи вам!

Смежные вопросы