Regex pattern – совпадающее слово, которое начинается с @

Мое мобильное приложение – это как форум на мобильной платформе (WP7, Silverlight, .NET). Одна из особенностей состоит в том, чтобы пометить других пользователей, написав символ «@», а затем имя пользователя.

На стороне сервера, PHP, я разбираю текст так, чтобы он соответствовал тегам и заменял их более читаемой строкой, такой как [tag](display name)|(user id)[/tag] , но это не важно для нашей цели ,

Чтобы соответствовать тегам, я .... @name, .... все специальные символы пробелом, поэтому я могу предотвратить это, например .... @name, .... Затем я удаляю все несколько пробелов, которые могла быть создана предыдущей командой. И, наконец, я разделяю все пробелы, а затем проверяю, начинается ли это слово с символа «@». Это, конечно, не лучший метод, но это то, что мне удалось сделать до сих пор. Там слабый момент, новые строковые символы заставляют мой код терпеть неудачу. Например:

 Hello, this is my first line since I go to second and then I tag @Jonh who is a good boy 

В таком случае код, который я буду писать ниже, терпит неудачу. Где $resp – текст для разбора.

 if (strpos($resp,'@') !== false) { $new_str = preg_replace('/[^a-zA-Z0-9_ \@]/', ' ', $resp); $new_str = preg_replace('/\s+/', ' ', $new_str); foreach(explode(' ', $new_str) as $word) { if (strpos($word, '@') === 0) { //found my tag! } } } } 

Что бы вы посоветовали сделать?