Регулярное выражение для преобразования имен пользователей в ссылки, как это делает Twitter - PullRequest
1 голос
/ 24 апреля 2010

в твиттере когда ты пишешь @moustafa изменится на <a href='user/moustafa'>@moustafa</a> теперь я хочу сделать то же самое когда пишите @moustafa + пробел, его изменение @moustafa только

Ответы [ 5 ]

3 голосов
/ 25 апреля 2010

Одно регулярное выражение, которое можно было бы использовать (бессовестно украденное из библиотеки @ везде javascript , упомянутой в другом ответе), было бы:

\B\@([a-zA-Z0-9_]{1,20})

Это ищет не-слово-границу (для предотвращения совпадения a@b [т.е. сообщений электронной почты]), за которой следует @, затем от одного до 20 (включительно) символов в этом классе символов.Конечно, маршрут что угодно, кроме пробела , как и в других ответах;это очень сильно зависит от того, какие значения (dis) должны быть разрешены в части метки @label.

Чтобы использовать выделенное регулярное выражение в PHP, можно использовать что-то вроде следующего для замены строки $subject.

$subject = 'Hello, @moustafa how are you today?';
echo preg_replace('/\B\@([a-zA-Z0-9_]{1,20})/', '<a href="user/$1">$0</a>', $subject);

Выше приведено что-то вроде:

Hello, <a href="user/moustafa">@moustafa</a> how are you today?
3 голосов
/ 24 апреля 2010

Вы ищете регулярное выражение, которое соответствует @username, где имя пользователя не имеет пробела? Вы можете использовать:

@[^ ]+

Если вы знаете разрешенные символы в имени пользователя, вы можете указать более точно, например, должны ли они быть буквенно-цифровыми:

@[A-Za-z0-9]+
0 голосов
/ 27 апреля 2010

Есть несколько библиотек, которые выполняют этот выбор и связывание для вас. В настоящее время я знаю библиотеки Java, Ruby и PHP под учетной записью mzsanford's Github: http://github.com/mzsanford/twitter-text-rb

0 голосов
/ 24 апреля 2010

Регулярные выражения в PHP - это просто строки, начинающиеся и заканчивающиеся одним и тем же символом. По условию этот символ /

Таким образом, вы можете использовать что-то вроде этого в качестве аргумента любой из многих функций регулярного выражения php:

Не пробел:

"/[^ ]+/" 

Буквенно-цифровая только:

"/[A-Za-z0-9]+/"
0 голосов
/ 24 апреля 2010

Почему бы не использовать библиотеку JavaScript @where , недавно выпущенную Twitter?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...