我的网址的preg_match()正则表达式模式

时间:2012-02-16 18:29:46

标签: php regex preg-match

我试图为这个网址制作一个模式:

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

我只是想从网址中检索数字5016 - fileid ..所以我使用了这段代码

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吗?

2 个答案:

答案 0 :(得分: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 :(得分: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号,该代码将始终产生正确的结果。 / p>