Php 如何从URL获取用户名

Php 如何从URL获取用户名,php,regex,Php,Regex,我想从Youtube URL中提取用户名,例如: 本例中的用户名为:ucbfywyfqr25x_d8b5Q_PQ 有人能帮我解释一下这个表达式吗?这样我就可以用下面的格式了: $url = "https://www.youtube.com/channel/UCbffYWYFQqR25X_d8b5Q_PQ"; $re = "<EXPRESSION GOES HERE>"; preg_match($re, $url, $matches); $username = $matches[

我想从Youtube URL中提取用户名,例如:

本例中的用户名为:ucbfywyfqr25x_d8b5Q_PQ

有人能帮我解释一下这个表达式吗?这样我就可以用下面的格式了:

$url = "https://www.youtube.com/channel/UCbffYWYFQqR25X_d8b5Q_PQ";
$re = "<EXPRESSION GOES HERE>";

preg_match($re, $url, $matches);

$username = $matches[1];
UCbffYWYFQqR25X_d8b5Q_PQ是url中的最后一个字母数字字符。可以使用以下正则表达式:

/\w+$/
顺便说一句,$matches[1]应该是$matches[0],除非使用捕获组/\w+$/:


您可以使用以下正则表达式匹配youtube.com/channel/之后的所有内容:

/?:youtube\.com | youtu\.be\/channel\/[\S]+/

请注意,此正则表达式还允许域youtu.be,因为它有时用作视频的备用链接

不过,我可能会尝试类似的方法来检查这两个要求:

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!";
}
有些人在遇到问题时认为我知道,我会使用正则表达式。现在他们有两个问题

如果您坚持使用regexp,它还会检查您是否真的在youtube.*或youtu.be上,请使用:

$re = '#youtu\.?be.*/([^/]+)$#';

很好,这很有效,有没有办法同时检查URL是否在Youtube上,这样他们就不会键入其他内容了?是的,检查我的编辑。如果对你有效,请接受。
$parts = explode('/', $url);
$username = array_pop($parts);
$re = '#youtu\.?be.*/([^/]+)$#';