2015-09-27 67 views
0

我有一個網址就擺在URL通配符字符串: http://domain.com/home/audio/14/1/file.mp3如何使用正則表達式PHP

但最後裏面的串子目錄可能是不同的,如:

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

的格式#的子目錄將是相同的,但我需要能夠得到file.mp3,而不管/ xx/xx /擁有什麼。我試圖在PHP中構建一個正則表達式來適應這種情況,通過某種通配符代替可能存在於這些子目錄中的字符。喜歡的東西:

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

對不起,我從來沒有做過的正則表達式。謝謝您的幫助。

+0

你現在還不清楚你在問什麼:你想重寫服務器端的傳入請求,還是在尋找一些神奇的URL在客戶端使用,以某種方式嘗試所有可用的組合來下載內容? – arkascha

回答

2

有很多的可能性,一個是匹配所有字符,而不是斜槓/。你將如何表達這一點?像[^\/]*。在括號中,列出了所有應該匹配的字符,但在開始時用^否定列表。所以你想匹配比斜槓(你必須逃避它,所以我們使用\/而不是單一的/)。用星號表示,除了斜線之外可能有零個,一個或許多字符 - 它是您要查找的通配符。

那麼整個正則表達式會是怎樣的呢?

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

我猜,這file可以在任何比賽,所以我用.*。 在Perl或PHP語法它會像:

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

在Java中,你必須雙引號(逃逸轉義字符反斜槓\\)。

祝你好運!