如何使用正则表达式验证 Twitter 用户名

2022-08-30 20:41:30

我在函数中使用了该模式:/[a-z0-9_]+/i

function validate_twitter($username) {
 if (eregi('/[a-z0-9_]+/i', $username)) {
  return true;
 }
}

有了这个,我测试输入是否是有效的twitter用户名,但我遇到了困难,因为它没有给我一个有效的结果。

有人可以帮我找到解决方案吗?


答案 1

要验证字符串是否为有效的 Twitter 句柄,请执行以下操作:

function validate_username($username)
{
    return preg_match('/^[A-Za-z0-9_]{1,15}$/', $username);
}

如果您尝试在字符串内匹配。@username

例如:RT @username: lorem ipsum @cjoudrey etc...

使用以下命令:

$string = 'RT @username: lorem ipsum @cjoudrey etc...';
preg_match_all('/@([A-Za-z0-9_]{1,15})/', $string, $usernames);
print_r($usernames);

您可以将后者与preg_replace_callback一起使用,以链接字符串中的用户名。

编辑:Twitter还为Java和Ruby开源了文本库,用于匹配用户名,哈希标签等。您可以查看代码并找到它们使用的正则表达式模式。

编辑(2):这是Twitter文本库的PHP端口:https://github.com/mzsanford/twitter-text-php#readme


答案 2

不要与 一起使用。/ereg*

事实上,如果可以避免的话,就不要使用它。http://php.net/preg_matchereg*

编辑:还要注意,将在 和 上匹配。你几乎肯定想要./[a-z0-9_]+/ispaces are invalidnot-a-real-name/^[a-z0-9_]+$/i

S


推荐