我设法弄清楚如何从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%如何在正则表达式中执行此操作,有人可以帮忙吗?
答案 0 :(得分:2)
您可以在@
组前面添加一个可选的name
:
'~^https?://(www\.)?twitter\.com/(#!/)?@?(?<name>[^/]+)(/\w+)*$~'
^^
请参见regex demo。因此,如果name
部分以@
开头,它将被可选的(但贪婪的)@?
子模式所占用,而(?<name>[^\/]+)
将获取其余的URL分成name
组。
请注意,~
regex分隔符在此可能更方便,以便不过度跳过模式中的正斜杠。
$re = '~^https?://(www\.)?twitter\.com/(#!/)?@?(?<name>[^/]+)(/\w+)*$~';
$str = 'https://twitter.com/#!/@tweet';
if (preg_match($re, $str, $m)) {
echo $m['name']; // => tweet
}