Чтобы проверить, является ли строка допустимым дескриптором 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): Вот PHP-порт текстовой библиотеки Twitter: https://github.com/mzsanford/twitter-text-php#readme