【问题标题】:How to parse YouTube video ID?如何解析 YouTube 视频 ID?
【发布时间】:2016-08-15 08:04:20
【问题描述】:

我需要 YouTube 视频链接的 ID。如何用 PHP 解析?

第一个链接:https://www.youtube.com/watch?v=sEhy-RXkNo0

第二个链接:https://youtu.be/sEhy-RXkNo0

【问题讨论】:

  • 请分享您迄今为止尝试过的代码。你可以试试正则表达式(有像 regexr.com> 这样的工具可以试试)。如果您坚持使用正则表达式,请分享它,人们会帮助您。将您的问题标记为过于宽泛...
  • 正则表达式/[\w\d-]+$/ 有效(参见regexr.com/3e0vo),匹配字符串末尾的任何字符、数字和破折号。但请记住,Youtube 将来可能会更改那里的 ID 格式 (webapps.stackexchange.com/a/54448)。

标签: php parsing youtube


【解决方案1】:

由于链接并不总是采用良好的格式,并且可能具有其他 GET 值,因此最好使用正则表达式。

<?php
    $link1 = "https://www.youtube.com/watch?v=sEhy-RXkNo0";
    $link2 = "https://www.youtu.be/sEhy-RXkNo0";

    preg_match("/\?v=([^&]+)/", $link1, $id1);
    preg_match("/youtu.be\/([^&]+)/", $link2, $id2);

    $id1 = (isset($id1[1])) ? ($id1[1]) : (NULL);
    $id2 = (isset($id2[1])) ? ($id2[1]) : (NULL);

【讨论】:

  • 感谢您的回复。这是一个误会。我想获取两个不同 YouTube 视频链接的 ID。
【解决方案2】:
$data = " https://www.youtube.com/watch?v=sEhy-RXkNo0";    //youtube link

$data2 = "https://youtu.be/sEhy-RXkNo0"; 

$link= substr($data, strpos($data, "v=") + 2);  //for first link
$anotherLink = substr($data, strpos($data, "e/") + 2);   //for secondlink

【讨论】:

  • 感谢您的回复。第二个链接失效了。有没有替代方案?
  • 第二个链接使用 $link= substr($data, strpos($data, ".be/") + 1);
  • $newlink= substr($link1, strpos($link1, "e/") + 2); //试试这个作为第二个链接它在我的 php 代码中完美工作
  • 感谢您的回复。这是一个误会。我想获取两个不同 YouTube 视频链接的 ID。
猜你喜欢
  • 2011-12-14
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 2011-02-14
  • 2023-03-17
  • 2012-10-11
  • 2011-08-25
相关资源
最近更新 更多