【问题标题】:Extract Twitch ursername from url从 url 中提取 Twitch 用户名
【发布时间】:2016-10-15 10:04:38
【问题描述】:

我正在尝试验证给定的 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)

例如,如果我输入网址:https://www.twitch.tv/AchannelName 它将输出:

0=>https://www.twitch.tv/AchannelName

1=>AchannelName

但对于以下网址:https://www.twitch.tv/channelName` 它将输出:

0=>https://www.twitch.tv/channelName

1=>annelName

PS:我使用 [a-zA-Z0-9] 因为用户名不能以下划线开头。

【问题讨论】:

    标签: php regex url preg-match twitch


    【解决方案1】:

    我设法通过将 Ungreedy 标志添加到我的正则表达式来修复它 这是工作代码:

    preg_match("/^[(http|https)://www.twitch.tv/]+((#)?[a-zA-Z0-9][\w]{2,24})$ /U", $url, $m)

    【讨论】:

      【解决方案2】:

      应该这样做

      ^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$
      

      然后使用

       $4
      

      【讨论】:

      • 我试过这样:preg_match("/^[(http|https):\/\/www\.twitch\.tv\/]+((#)?[a-zA-Z0-9][\w]{2,24})$/", $input_line, $output_array);,我没用,效果一样...只是跳过字符(w、t、p、s、h、c、v ) 你可以在这里测试phpliveregex.com
      • 嘿,我更新了我的答案!它的方法有点不同,但应该很有用@DiyanDesigns
      • 感谢您的宝贵时间,我打赌它有效,但我已经通过添加 Ungreedy 选项 @Vedant 解决了我的问题
      【解决方案3】:

      您可以简单地使用内置的 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;
      

      【讨论】:

      • 我已经尝试过了,但由于某种原因它不起作用:这是我的代码:$urls = parse_url($url); if(isset($urls['host']) && $urls['host'] == 'twitch.tv'){ $id = ltrim($urls['path'],'/'); }else{ $id = 0; }
      • 是的,因为 $urls['host'] == 'twitch.tv' 是假的。它应该是 $urls['host == "www.twitch.tv"。所以应该是:'$url = "twitch.tv/channelName"; $urls = parse_url($url); print_r($urls); if(isset($urls['host']) && $urls['host'] == 'www.twitch.tv'){ $id = ltrim($urls['path'],'/'); }else{ $id = 0; } 回声 $id;'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2014-10-04
      • 2021-04-12
      • 2015-03-19
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多