>我不确定我是否以正确的方式做到这一点。 我想采取一个简单的链接,像这样;
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是正确的方法吗?
这里有一个简单的方法...
// $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&t=123),那么这是行不通的,你必须像URL一样解析URL(即不使用str_replace)。
可以使用
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()
更有效,即使视频 URL 中有其他查询参数也能正常工作。