这是主题:
http://www.mysite.com/files/get/937IPiztQG/the-blah-blah-text-i-dont-need.mov
我需要使用正则表达式只是在最后一点之前/(包括最后一次/太多)
937IPiztQG字符串可能会改变;它将包含a-z A-Z 0-9 - _
这是我试过的:
$code = strstr($url, '/http:\/\/www\.mysite\.com\/files\/get\/([A-Za-z0-9]+)./');
编辑:我需要使用正则表达式,因为我实际上并不知道URL。我有这样的字符串......
<a href="http://www.mysite.com/files/get/1B-MenlPW0/my-file.doc">a song</a>
<a href="http://www.mysite.com/files/get/1ZeR5KEo9x/my-song.mp3">more text</a>
<a href="http://www.mysite.com/files/get/8IySvO5gMD/my-video.avi">oh and here goes some more blah blah</a>
我需要它来读取该字符串并切断URL的文件名部分。
答案 0 :(得分:4)
这里你真的不需要正则表达式。这是一个简单的解决方案:
echo basename(dirname('http://www.mysite.com/files/get/937IPiztQG/the-blah-blah-text-i-dont-need.mov'));
// echoes "937IPiztQG"
另外,我想引用Jamie Zawinski的话:
“有些人在面对问题时,会想'我知道,我会使用正则表达式'。”现在他们有两个问题。“
答案 1 :(得分:2)
答案 2 :(得分:0)
/http:\/\/www.mysite.com\/files\/get\/([^/]+)\/
这样的事情怎么样?哪个应该在/.
之前捕获不是/,1次或更多次的任何内容答案 3 :(得分:0)
答案 4 :(得分:0)
正则表达式的贪婪将确保此工作正常^.*/
答案 5 :(得分:0)
试试这个
$ok=preg_match('#mysite\.com/files/get/([^/]*)#i',$url,$m);
if($ok) $code=$m[1];
然后好好阅读这些页面
请注意