从包含 youtube/vimeo url 和 PHP 的字符串中提取域名、视频 url 和视频 ID 的正则表达式模式
Regex pattern to extract domain name, video url and video id from a string containing youtube/vimeo url with PHP
我需要一个正则表达式或 php preg_match 函数来提取 youtube/vimeo url 和视频 provider/domain 名称,如 (vimeo/youtube ) 来自包含视频 url.
的字符串
从提取的视频 url 字符串中,我需要找到确切的视频 ID。
正则表达式还应从下方绘制视频 ID url,
谢谢,我正在研究解决方案。如果我找到它,我会 post 作为答案。
$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";
// 从字符串
到return 视频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;
}
// 从字符串中调用函数,returns 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;
我需要一个正则表达式或 php preg_match 函数来提取 youtube/vimeo url 和视频 provider/domain 名称,如 (vimeo/youtube ) 来自包含视频 url.
的字符串从提取的视频 url 字符串中,我需要找到确切的视频 ID。
正则表达式还应从下方绘制视频 ID url,
谢谢,我正在研究解决方案。如果我找到它,我会 post 作为答案。
$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";
// 从字符串
到return 视频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;
}
// 从字符串中调用函数,returns 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.
中提取视频 IDif($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;