2012-02-16 63 views
0

正則表達式我試圖讓這個URL模式:的preg_match()爲我的網址

 
http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv 

我只是想以檢索號碼5016 - fileid從URL ..所以我用這個代碼

preg_match('#http://media\.gilmanetwork\.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#', $markup, $matches); 

所以如果我使用$matches[3],我應該得到數字5016的權利?

回答

1

你在那裏犯了一個大錯誤。 gilmanetworknetwork。嘗試

'#http://media.network.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#' 

導致

<?php 
$markup = "http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv"; 
preg_match('#http://media.network.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#', $markup, $matches); 
print_r($matches); 
// Array ([0] => http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv [1] => ea03addc753ff8d80f6be4b49a414cfd [2] => 4f3d2012 [3] => 5016) 
1

看看parse_url(),結合pathinfo()

$url  = 'http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv'; 
$filename = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_FILENAME); 

echo $filename; // 5016 

,這種方法有正則表達式的優點在於,該URL的格式可以改變 - 也可能非常廣泛 - 但只要資源的文件名是它的ID號碼,這個代碼將始終產生正確的結果。