从twitter url中删除@



我已经想好了如何从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
}

最新更新