如何剥离网址的一部分以获取剩余的唯一ID

时间:2012-03-08 23:15:17

标签: php regex

大家好我有一个用户生成的YouTube网址变量。这里有很多关于Regex的线程,什么不是,但大多数都是用js执行的。我想在php中运行服务器端的所有内容,这是我的简单功能:

function youTubeID($url){
     $url = preg_replace('http://youtu.be/ Regex goes here', '', $url);
     return $url;
}

标记:

<a href="http://youtu.be/yhXhVMKxnkY"><img src="http://img.youtube.com/vi/'.youTubeID($variable).'/0.jpg" /><img src="play.png" alt="Watch the video" title="Watch the video"/></a>

问题: 有谁知道http://youtu.be/的正确正则表达式?

我确信这是一个快速回答,我对正则表达式并不太精明。从旁注来看,有没有人知道任何好的资源,我可以自学一些好的正则表达式,所以我不必问这样愚蠢的语法问题?欢呼声。

2 个答案:

答案 0 :(得分:1)

为什么要使用(相对较慢的)RegEx?

$url = substr($url, strlen('http://youtu.be/'));

显然你有一个设定的起点,所以每次你调用这个函数都不需要计算它,但这样做是为了证明这个想法。

修改

如果出于某种原因需要使用RegEx:

$url = preg_replace('#http\://youtu\.be/#', '', $url);

干杯

答案 1 :(得分:0)

你走了:

/(?<=v(\=|\/))([-a-zA-Z0-9_]+)|(?<=youtu\.be\/)([-a-zA-Z0-9_]+)/m

编辑:woops,你可以说..

 function youTubeID($url){
     $pattern = "/(?<=v(\=|\/))([-a-zA-Z0-9_]+)|(?<=youtu\.be\/)([-a-zA-Z0-9_]+)/m";
     preg_match($pattern, $ytURL, $url);
     return $url[0];
     }

进行测试:http://gskinner.com/RegExr/

这总是为我添加书签:http://www.regular-expressions.info/reference.html