Я создаю свою собственную версию twitter, я понятия не имею, как получить мой конец php-скрипта, чтобы забрать @membername в введенном тексте. Включение нескольких @ membername, например @billy @joseph, @ tyrone, @ kesha message
или
@billy попал в @tyrone, он прослушивает @kesha о деньгах, которые вы ему должны.
Какие-нибудь сценарии использования, как я могу это сделать?
Как насчет использования регулярных выражений и preg_match_all
, например:
$str = "Including multiple @membername's for example @billy @joseph, @tyrone,@kesha message "; if (preg_match_all('#(@\w+)#', $str, $m)) { var_dump($m[1]); }
Что даст вам следующий результат:
array 0 => string '@membername' (length=11) 1 => string '@billy' (length=6) 2 => string '@joseph' (length=7) 3 => string '@tyrone' (length=7) 4 => string '@kesha' (length=6)
В принципе, здесь шаблон, который я использовал в моем регулярном выражении, соответствует:
@
\w+
Существует библиотека PHP, предназначенная для соответствия стандартам Twitter. Это может сэкономить вам много хлопот. Он поддерживает автозапуск, а также извлечение для @screen_names, #hashtags и @ screen_name / lists.
Я написал плагин WordPress, который обрабатывает это давным-давно. Вот функция, которую я использую для этого.
function convert_twitter_link($content) { $pattern = '/\@([a-zA-Z0-9_]+) /'; $replace = '<a rel="nofollow" target="_blank" href="http://twitter.com/'.strtolower('\1').'">@\1</a>'; return preg_replace($pattern,$replace,$content); }
Все зависит от того, как вы его настроите … Могут ли у ваших имен пользователей пробел? Если нет, просто просто проанализируйте строку сообщения для «@» и заберите все символы, которые появляются после того, как вы встретите пробел … это простой способ сделать это.
Другая сторона вопроса – это то, что вы делаете с именами пользователей, как только вы их «найдете»?