从 url 中提取 Twitch 用户名
Extract Twitch ursername from url
我正在尝试验证给定的 url 是否为 twitch.tv,然后从中提取频道名称。我想出了这个正则表达式:
preg_match("/^[(http|https):\/\/www.twitch.tv\/]+((?:[a-zA-Z0-9][\w]{3,24}))$/", $url, $output_array);
我似乎可以工作,但前提是用户名的第一个字符不是其中一个(w、t、p、s、h、c、v、b)
例如,如果我输入 url:https://www.twitch.tv/AchannelName
它将输出:
0=>https://www.twitch.tv/AchannelName
1=>AchannelName
但对于以下 url:https://www.twitch.tv/
channelName`
它将输出:
0=>https://www.twitch.tv/channelName
1=>annelName
PS: 我正在使用 [a-zA-Z0-9] 因为用户名不能以下划线开头。
您可以简单地使用内置的 PHP 函数 parse_url。 http://php.net/manual/en/function.parse-url.php。这将为您提供 URL 的所有部分和频道名称,如下所示:/channelname.
新信息后的更新答案。
$url = "https://www.twitch.tv/channelName";
$urls = parse_url($url);
if(isset($urls['host']) && $urls['host'] == 'www.twitch.tv') {
$id = ltrim($urls['path'],'/'); }else{ $id = 0; }
echo $id;
应该这样做
^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$
然后使用
我通过在我的正则表达式中添加 Ungreedy 标志来设法修复它
这是工作代码:
preg_match("/^[(http|https)://www.twitch.tv/]+((#)?[a-zA-Z0-9][\w]{2,24})$/U",
$url, $m)
我正在尝试验证给定的 url 是否为 twitch.tv,然后从中提取频道名称。我想出了这个正则表达式:
preg_match("/^[(http|https):\/\/www.twitch.tv\/]+((?:[a-zA-Z0-9][\w]{3,24}))$/", $url, $output_array);
我似乎可以工作,但前提是用户名的第一个字符不是其中一个(w、t、p、s、h、c、v、b)
例如,如果我输入 url:https://www.twitch.tv/AchannelName
它将输出:
0=>
https://www.twitch.tv/AchannelName
1=>AchannelName
但对于以下 url:https://www.twitch.tv/
channelName`
它将输出:
0=>
https://www.twitch.tv/channelName
1=>annelName
PS: 我正在使用 [a-zA-Z0-9] 因为用户名不能以下划线开头。
您可以简单地使用内置的 PHP 函数 parse_url。 http://php.net/manual/en/function.parse-url.php。这将为您提供 URL 的所有部分和频道名称,如下所示:/channelname.
新信息后的更新答案。
$url = "https://www.twitch.tv/channelName";
$urls = parse_url($url);
if(isset($urls['host']) && $urls['host'] == 'www.twitch.tv') {
$id = ltrim($urls['path'],'/'); }else{ $id = 0; }
echo $id;
应该这样做
^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$
然后使用
我通过在我的正则表达式中添加 Ungreedy 标志来设法修复它 这是工作代码:
preg_match("/^[(http|https)://www.twitch.tv/]+((#)?[a-zA-Z0-9][\w]{2,24})$/U", $url, $m)