首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过URL确定Vimeo源(regex)

通过URL确定Vimeo源(regex)
EN

Stack Overflow用户
提问于 2012-07-03 03:23:04
回答 2查看 886关注 0票数 1

好吧,这里有个有趣的。

当输入一个拷贝并将Vimeo粘贴到输入框中时,我需要弄清楚用户引用的是什么源。对于那些不熟悉的人,Vimeo目前有4个不同的来源,可以通过他们的简单API访问:

属于用户的视频

有效网址结构: http://vimeo.com/user3825208https://vimeo.com/davekiss

属于某一组的视频

有效网址结构: http://vimeo.com/groups/eos550dhttps://vimeo.com/groups/162

属于频道的视频

有效网址结构: http://vimeo.com/channels/hdhttps://vimeo.com/channels/201

属于相册的视频

有效网址结构: http://vimeo.com/album/1919683https://vimeo.com/album/mycustomname

因此,基本上,我希望能够将URL运行到一个函数中,它将告诉我URL属于哪个源。

我一直使用这个视频属于一个用户,但现在我需要扩展到所有的来源。

sscanf(parse_url($url, PHP_URL_PATH), '/%d', $video_id);

也许我该这样做四次?preg_match('???', $url);

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-03 03:43:17

您不需要正则表达式:

代码语言:javascript
运行
复制
function discoverVimeo($url)
{
    if ((($url = parse_url($url)) !== false) && (preg_match('~vimeo[.]com$~', $url['host']) > 0))
    {
        $url = array_filter(explode('/', $url['path']), 'strlen');

        if (in_array($url[0], array('album', 'channels', 'groups')) !== true)
        {
            array_unshift($url, 'users');
        }

        return array('type' => rtrim(array_shift($url), 's'), 'id' => array_shift($url));
    }

    return false;
}

下面将返回一个数组,其中一个是索引id,另一个是索引type

  • user
  • album
  • channel
  • group
票数 3
EN

Stack Overflow用户

发布于 2012-07-03 03:33:22

我要preg_match()以下正则表达式模式(按这个顺序排列):

代码语言:javascript
运行
复制
$channel_regex = '%vimeo\.com/channels/([a-zA-Z0-9]+)%/i';
$group_regex = '%vimeo\.com/groups/([a-zA-Z0-9]+)%/i';
$album_regex = '%vimeo\.com/album/([a-zA-Z0-9]+)%/i';
$user_regex = '%vimeo\.com/([a-zA-Z0-9]+)%/i';

这将对以下方面进行正则匹配:

代码语言:javascript
运行
复制
vimeo.com/channels/...grab_this_data...
vimeo.com/groups/...grab_this_data...
vimeo.com/albums/...grab_this_data...

如果所有这些preg_matches都失败了(因此是一个用户URL),它将获取网址中的任何内容:

代码语言:javascript
运行
复制
vimeo.com/...grab_this_data...

祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11304044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档