要从Twitter网址中删除@吗?

时间:2018-07-15 13:09:38

标签: php regex

我设法弄清楚如何从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%如何在正则表达式中执行此操作,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您可以在@组前面添加一个可选的name

'~^https?://(www\.)?twitter\.com/(#!/)?@?(?<name>[^/]+)(/\w+)*$~'
                                       ^^

请参见regex demo。因此,如果name部分以@开头,它将被可选的(但贪婪的)@?子模式所占用,而(?<name>[^\/]+)将获取其余的URL分成name组。

请注意,~ regex分隔符在此可能更方便,以便不过度跳过模式中的正斜杠。

PHP demo

$re = '~^https?://(www\.)?twitter\.com/(#!/)?@?(?<name>[^/]+)(/\w+)*$~';
$str = 'https://twitter.com/#!/@tweet';
if (preg_match($re, $str, $m)) {
    echo $m['name']; // => tweet
}