我已经想好了如何从URL中获取Twitter用户名,但我也需要它来去掉@,我运气不太好。
$twitter_url = https://twitter.com/@twitter;
if (preg_match("/^https?://(www.)?twitter.com/(#!/)?(?<name>[^/]+)(/w+)*$/", $twitter_url, $regs)) {
}
$twitterUsername = $regs['name'];
这很好,但它显示为…
@twitter
当我只需要它减去@时,我不100%确定如何在regex中做到这一点,有人能帮忙吗?
您可以在name
组之前添加一个可选的@
:
'~^https?://(www.)?twitter.com/(#!/)?@?(?<name>[^/]+)(/w+)*$~'
^^
请参阅regex演示。因此,如果name
部分以@
开始,它将被可选(但贪婪(的@?
子模式消耗,而(?<name>[^/]+)
将把URL子部分的其余部分抓取到name
组中。
请注意,~
正则表达式分隔符在这里可能更方便,以免过多地显示模式中的斜杠。
PHP演示:
$re = '~^https?://(www.)?twitter.com/(#!/)?@?(?<name>[^/]+)(/w+)*$~';
$str = 'https://twitter.com/#!/@tweet';
if (preg_match($re, $str, $m)) {
echo $m['name']; // => tweet
}