【问题标题】:Regex pattern to extract domain name, video url and video id from a string containing youtube/vimeo url with PHP使用 PHP 从包含 youtube/vimeo url 的字符串中提取域名、视频 url 和视频 id 的正则表达式模式
【发布时间】:2016-09-22 09:47:56
【问题描述】:

我需要一个 regex 或 php preg_match 函数,它应该从包含视频 url 的字符串中提取 youtube/vimeo url 和视频提供者/域名,例如 (vimeo/youtube)。

并且从提取的字符串视频url中,我需要找到确切的视频ID。

正则表达式也应该从下面的 url 中绘制视频 ID,

  1. Youtube https://youtube.googleapis.com/v/jGyZDgpv_Hk

  2. vimeo https://vimeo.com/channels/staffpicks/167414855

谢谢,我正在研究解决方案。如果我找到它,我会发布作为答案。

【问题讨论】:

  • 404 未找到问题
  • @VigneshChinnaiyan,这看起来像是一个答案。有什么问题?
  • @jkdev 很抱歉将我的答案发布为一个问题,我指的是 stackoverflow 和其他网站以获得这个确切的答案。我无法找到答案,所以我只是在研究解决方案。为了帮助其他有这种疑问的人可以参考这个。这就是我发布新问题的原因。
  • 人们有时喜欢这样做。您可以发布问题,然后针对您自己的问题发布答案,以便与他人分享您的知识。我也这样做过;)
  • @jkdev,感谢您的支持哥们,我已经更改了问题部分,并在答案部分发布了我的答案。

标签: javascript php youtube preg-match-all vimeo


【解决方案1】:
$sample_text = "Cieker is the largest talentize social and professional networking website, you can view it on https://www.cieker.com and the about video is on https://www.youtube.com/watch?v=jGyZDgpv_Hk";

//从字符串返回视频url的函数

  function extract($html)
  {

  $regex = '/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|channels\/(?:\w+\/)|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/';

  preg_match_all($regex, $html, $match);

  $matched = array_unique($match[0]);

  usort($matched, function($a, $b) 

  {

      return strlen($b) - strlen($a);

  });

  return $matched;

}

// 调用函数,从字符串中返回 youtube 或 vimeo url。

$check_extract = extract($sample_url ); 

// 查找视频提供商名称的函数。

function videoType($url) {

if (strpos($url, 'youtu') > 0)
{

  return 'youtube';

} 
else if (strpos($url, 'vimeo') > 0) 
{

  return 'vimeo';

} 
else 
{

  return 'unknown';

}

}

//调用函数,已提取url作为参数。

$provider = videoType($check_extract[0]);

// 下面的正则表达式将从上面提取的 youtube url 中提取视频 id。

if($provider=="youtube")

{
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/",$check_extract[0], $matches);?>
$id =$matches[1];

}

else if($provider=="vimeo")

{

preg_match("/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/",$check_extract[0], $output_array);?>

$id =$output_array[5];

}

// 这将获得 youtube/vimeo 的视频 ID。

$video_id = $id;

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2014-07-25
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多