我想从Youtube网址中提取用户名,例如: https://www.youtube.com/channel/UCbffYWYFQqR25X_d8b5Q_PQ
在这种情况下,用户名为:UCbffYWYFQqR25X_d8b5Q_PQ
有人可以帮我解决这个问题,以便我可以按以下格式使用它:
$url = "https://www.youtube.com/channel/UCbffYWYFQqR25X_d8b5Q_PQ";
$re = "<EXPRESSION GOES HERE>";
preg_match($re, $url, $matches);
$username = $matches[1];
答案 0 :(得分:1)
您可以在&#34; youtube.com/channel /&#34;之后匹配所有内容。使用此RegEx:
/(?:youtube\.com|youtu\.be)\/channel\/([\S]+)/
请注意,此RegEx允许域名&#34; youtu.be&#34;同时,因为它有时被用作视频的替代链接。
我可能会尝试这样的事情来检查这两个要求:
if (!preg_match("/(?:youtube\.com|youtu\.be)/",$youtubeUrl)){
echo "This is not a YouTube link!";
} else if (!preg_match("/\/channel\/([\S]+)/",$youtubeUrl)){
echo "This is not a valid YouTube channel!";
} else {
echo "Success!";
}
答案 1 :(得分:0)
UCbffYWYFQqR25X_d8b5Q_PQ
是网址中的最后一个字母数字字符。您可以使用以下正则表达式:
/\w+$/
除非您使用捕获组($matches[1]
),否则$matches[0]
应为/(\w+)$/
:
$url = "https://www.youtube.com/channel/UCbffYWYFQqR25X_d8b5Q_PQ";
$re = "/\w+$/";
preg_match($re, $url, $matches);
$username = $matches[0];
答案 2 :(得分:0)
$parts = explode('/', $url);
$username = array_pop($parts);
有些人在面对问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。
如果您坚持使用正则表达式,也会检查您是否真的在youtube上。*或youtu.be,请使用:
$re = '#youtu\.?be.*/([^/]+)$#';