Регулярное выражение для поиска и замены упоминаний @, таких как twitter

Я разрабатываю приложение PHP, которому требуется регулярное выражение для замены упоминаний @, таких как twitter. Также регулярное выражение должно удовлетворять следующим требованиям.

  1. если есть только @ и ничего до и после этого то заменять не надо.
  2. @ в письмах не следует заменять. Например. [email protected] не следует заменять.
  3. Только такие строки, как @sam или @example, должны быть заменены как <a href="http://twitter.com/sam">@sam</a> и <a href="http://twitter.com/example">@example</a>

Пожалуйста помоги. Заранее спасибо.


person vasanth.v    schedule 13.07.2011    source источник


Ответы (3)


Ух ты. Я сам нашел ответ, ребята.

$tweet = preg_replace('/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '$1<a href="http://twitter.com/$2">@$2</a>', $tweet);

Спасибо за помощь ребята.

person vasanth.v    schedule 13.07.2011

Как насчет чего-то вроде -

(?<!\w)@[\w]+
person Paul McLean    schedule 13.07.2011

Поскольку твиттер может содержать до 15 символов, вы можете написать его так, чтобы избежать некоторых ошибок:

$tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);
person Mathieu Rodic    schedule 13.07.2011