我不确定我是否以正确的方式解决这个问题。我想采取一个简单的链接,像这样;
https://www.youtube.com/watch?v=examplevideo
并将其转换为
<a href= 'https://www.youtube.com/embed/examplevideo' target=_blank><img src='http://img.youtube.com/vi/examplevideo/0.jpg' width='536' border='1'></a>
过去,我已经能够通过使用str_replace更改链接,这非常简单,因为您将拉出一个模式并将其替换为另一个模式。但是,在这种情况下,保留的模式在输出中显示两次。 str_replace是正确的方法吗?
答案 0 :(得分:1)
这是一种简单的方法......
// $video_url = "https://www.youtube.com/watch?v=examplevideo";
$videoId = str_replace("https://www.youtube.com/watch?v=", "", $video_url);
enter code here
$videoLink = "<a href= 'https://www.youtube.com/embed/$videoId' target=_blank><img src='http://img.youtube.com/vi/$videoId/0.jpg' width='536' border='1'></a>"
当然,如果您的URL更复杂(例如?v = abc&amp; t = 123),那么这将无效,您必须更像URL(即不使用str_replace)解析URL。 / p>
答案 1 :(得分:1)
您可以使用parse_url()
和parse_str()
获取视频ID,然后使用sprintf()
构建嵌入代码。
我做了一个小功能:
function getEmbedded($url) {
$parts = parse_url($url);
$parsed = parse_str($parts['query'], $params);
$result = sprintf("<a href= 'https://www.youtube.com/embed/%s'
target=_blank><img src='http://img.youtube.com/vi/%s/0.jpg'
width='536' border='1'></a>", $params['v'],$params['v']);
return $result;
}
用法:
echo getEmbedded($url);
这比使用str_replace()
更有效,即使视频网址中有其他查询参数也能正常工作。