0

我不确定我是否以正确的方式解决这个问题。我想取一个简单的链接,像这样;

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 是正确的方法吗?

4

2 回答 2

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&t=123),那么这将不起作用,您必须将 URL 解析得更像一个 URL(即不使用 str_replace)。

于 2013-10-14T21:34:32.797 回答
1

您可以使用parse_url()andparse_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 中有其他查询参数,这也比使用更有效并且有效。

于 2013-10-14T21:57:40.247 回答