大家好我有一个用户生成的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/的正确正则表达式?
我确信这是一个快速回答,我对正则表达式并不太精明。从旁注来看,有没有人知道任何好的资源,我可以自学一些好的正则表达式,所以我不必问这样愚蠢的语法问题?欢呼声。
答案 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