0

我正在尝试编写一个正则表达式来解析一个 php 脚本的这个 url:

http://www.megavideo.com/v/B4PZHP0Nb2e8a877f8378e778446318596415780

得到这个:B4PZHP0N

有人可以帮忙吗?提前致谢。

4

4 回答 4

2

由于您使用的是 PHP,因此只需使用parse_urland substr

$mega = 'http://www.megavideo.com/v/B4PZHP0Nb2e8a877f8378e778446318596415780';
$want = substr(parse_url($mega, PHP_URL_PATH), 3, 8);

演示:http: //ideone.com/f3viH

于 2011-09-09T05:41:23.730 回答
1

试试这个正则表达式:

/^http:\/\/www\.megavideo\.com\/v\/(.{8}).*$/

(错误已更正)

另请参阅我的ideone或我的jsfiddle

于 2011-09-09T05:22:44.973 回答
0

/([^:.\/]+)[a-f0-9]{32}/

因此,如果匹配,则 B4PZHP0N 在捕获缓冲区 1 中,即:$1

于 2011-09-09T05:44:14.593 回答
0

我做了类似但更通用的事情。所以 id 可以出现在 /v/、?v= 或 &v= 之后

$url = 'http://www.megavideo.com/v/B4PZHP0Nb2e8a877f8378e778446318596415780';
foreach (array('/v/', '?v=', '&v=') as $k)
{
    $pos = strpos($url, $k);
    if ($pos>0)
    {
        $pos += strlen($k);
        break;
    }   
}   
if (!$pos)
    die("not found");
$id = substr($url, $pos, 8);
die($id);
于 2011-11-12T17:51:40.263 回答