首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索YouTube ID +删除某些参数的PHP函数

检索YouTube ID +删除某些参数的PHP函数
EN

Stack Overflow用户
提问于 2020-05-06 13:21:26
回答 1查看 108关注 0票数 1

我有一个函数可以解析YouTube URL来检索视频id,然后它会为大多数用例生成干净的嵌入代码。如果我向它传递一个存在time_continue的URL,比如https://www.youtube.com/watch?time_continue=79&v=2uBDNhe6Gkk&feature=emb_title,那么嵌入就会中断

代码语言:javascript
复制
if(isset($_POST['submit'])){
$embedURL = mysqli_real_escape_string($con, $_POST['embedCode']);

function convertYoutube($string) {
  return preg_replace(
    "'#(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\-nocookie\.com\/embed\/|youtube\.com\/(?:embed\/|v\/|e\/|\?v=|shared\?ci=|watch\?v=|watch\?.+&v=))([-_A-Za-z0-9]{10}[AEIMQUYcgkosw048])\S*#s'",
    "\https://www.youtube.com/embed/$2",
    $string
  );
}

$embedURL = convertYoutube($embedURL);
$embedCode = "<div class=''embed-responsive embed-responsive-16by9''><iframe class=''embed-responsive-item'' src=''$embedURL'' allowfullscreen></iframe></div>"; 
}

代码生成以下代码(它没有去掉我需要删除的time_continue和feature=emb_title参数)。

代码语言:javascript
复制
<div class='embed-responsive embed-responsive-16by9'><iframe class='embed-responsive-item' src='https://www.youtube.com/watch?time_continue=79&v=2uBDNhe6Gkk&feature=emb_title' allowfullscreen></iframe></div>

我希望函数将其格式化为下面没有参数的嵌入代码。谢谢

代码语言:javascript
复制
<div class='embed-responsive embed-responsive-16by9'><iframe class='embed-responsive-item' src='https://www.youtube.com/embed/2uBDNhe6Gkk' allowfullscreen></iframe></div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 13:50:17

这是已经在SO上的一些其他问题的一部分,但由于你有它们的组合,所以我想我会把它们放在一起回答,而不是试图在评论中解释它。

第一部分是使用parse_url()将URL分成不同的部分。然后使用字符串的查询部分,使用parse_str()对其进行解析,以分离出所有参数。然后将相关部分组合到新的URL中...

代码语言:javascript
复制
$url_parts = parse_url($embedURL);
parse_str($url_parts['query'], $params);
$embedURL = $url_parts['scheme'] . '://' . $url_parts['host'] . 
        $url_parts['path']."/".$params['v'];

这给了..。

代码语言:javascript
复制
https://www.youtube.com/watch/2uBDNhe6Gkk

要用embed替换watch,只需替换'path'部件...

代码语言:javascript
复制
$embedURL = $url_parts['scheme'] . '://' . $url_parts['host'] . 
        "/embed/" . $params['v'];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61627920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档