如何从URL获取用户名

时间:2014-12-07 01:20:17

标签: php regex

我想从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];

3 个答案:

答案 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.*/([^/]+)$#';