gpt4 book ai didi

youtube - preg_match找出YouTube ID

转载 作者:行者123 更新时间:2023-12-03 05:28:05 25 4
gpt4 key购买 nike

我已经找到了正常YouTube URL的YouTube ID。但是我没有考虑过简短的youtu.be网址,也不想过滤掉YouTube-Id视频。据我所知,有以下几种YT-URL:

youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index

youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o

youtube.com/v/0zM3nApSvMg?fs=1&hl=zh_CN&rel=0

youtube.com/watch?v=0zM3nApSvMg#t=0m10s

youtube.com/embed/0zM3nApSvMg?rel=0

youtube.com/watch?v=0zM3nApSvMg

youtu.be/0zM3nApSvMg

我在另一个问题中发现了这个问题,但是没有用:

/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/

所以我的问题是:我该如何编辑以下代码才能始终获取YouTube ID? ;)

非常感谢!
add_filter('embed_oembed_html', 'my_embed_oembed_html', 99, 4);
function my_embed_oembed_html( $html, $url, $attr, $post_id) {
$posttext = substr($url[0],1);
preg_match('/v\=([a-zA-Z0-9,-]+)/', $url, $youtubeID);

return '<div id="video" class="border-frame"><video class="video" data-settings="autoresize:fit" preload="none" data-youtube-id="' . $youtubeID[1] . '"></video></div>';
}

最佳答案

实际上,您可能会考虑不使用正则表达式。 PHP具有许多可以帮助您的内置函数。例如,尝试以下代码:

$urls = array(
'youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index',
'youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o',
'youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0',
'youtube.com/watch?v=0zM3nApSvMg#t=0m10s',
'youtube.com/embed/0zM3nApSvMg?rel=0',
'youtube.com/watch?v=0zM3nApSvMg',
'youtu.be/0zM3nApSvMg'
);

function displayId($url, $id) {
echo "URL: ", $url, "\n";
echo "ID: ", $id, "\n\n";
}

foreach ($urls as $url) {

$u = parse_url($url);

parse_str($u['query'], $queryVars);

if ($u['query'] && $queryVars['v']) {
displayId($url, $queryVars['v']);
} else if ($u['fragment']) {
displayId($url, basename($u['fragment']));
} else if ($u['path']) {
displayId($url, basename($u['path']));
}
}

这将产生以下输出:
URL: youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
ID: 0zM3nApSvMg

URL: youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
ID: QdK8U-VIH_o

URL: youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
ID: 0zM3nApSvMg

URL: youtube.com/watch?v=0zM3nApSvMg#t=0m10s
ID: 0zM3nApSvMg

URL: youtube.com/embed/0zM3nApSvMg?rel=0
ID: 0zM3nApSvMg

URL: youtube.com/watch?v=0zM3nApSvMg
ID: 0zM3nApSvMg

URL: youtu.be/0zM3nApSvMg
ID: 0zM3nApSvMg

该代码可能更健壮,但我认为它可以为您提供想法。 :)

干杯。

关于youtube - preg_match找出YouTube ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com