Zajmuję się tworzeniem aplikacji PHP, która potrzebuje wyrażenia regularnego, aby zastąpić wzmianki @, takie jak twitter. Również wyrażenie regularne powinno spełniać następujące potrzeby.

  1. jeśli jest tylko @ i nic przed i po tym, nie należy go wymieniać.
  2. @ w e-mailach nie powinny być zastępowane. Dla np. sam@example.com nie należy zastępować.
  3. Tylko ciągi takie jak @sam lub @example powinny być zastępowane, takie jak <a href="http://twitter.com/sam">@sam</a> i <a href="http://twitter.com/example">@example</a>

Proszę pomóż. Z góry dziękuję.

1
vasanth.v 13 lipiec 2011, 08:04

3 odpowiedzi

Najlepsza odpowiedź

Łał. Sam znalazłem odpowiedź, chłopaki.

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

Dziękuję za pomoc.

2
vasanth.v 13 lipiec 2011, 08:31

Co powiesz na coś takiego -

(?<!\w)@[\w]+
1
Paul McLean 13 lipiec 2011, 08:11

Ponieważ twitter może zawierać do 15 znaków, możesz napisać go w ten sposób, aby uniknąć niektórych błędów:

$tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);
1
Mathieu Rodic 13 lipiec 2011, 08:52