嗨,我有一个变量,它是用户生成的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