如何去掉url的一部分以获得剩余的唯一ID


How strip a section of a url away to get the remaining unique ID

嗨,我有一个变量,它是用户生成的YouTube url。这里有很多关于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/?

我相信这是一个快速的答案,我对正则表达式不是很精通。顺便说一句,有人知道有什么好的资源可以教自己一些好的正则表达式吗?这样我就不必问这样愚蠢的语法问题了?干杯

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

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

很明显,您有一个设定的起点,所以不需要每次调用函数时都计算它,但在这里这样做是为了演示这个想法。

编辑:

如果有某种原因需要您使用RegEx:

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

干杯

开始:

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

编辑:哇,你可以说。。

 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