ничего не будет соответствовать, если это возможно. Поскольку ничего не следует, это всегда будет так.

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

Когда мы отображаем историю, мы храним весь текст в переменной - скажем, $ story.

То, что я хотел бы сделать str_replace (я думаю, это то, что мне нужно), который говорит что-то вроде этого: «Если текст содержит @something, затем превратить его в ссылку, как<a href="http://www.twitter.com/something">@something</a>- но делайте это только в том случае, если перед символом @ нет ничего (исключая адреса электронной почты)

Кроме того, нам нужно остановить «что-то», если после него есть пробел или пунктуация. так что @ что-то. не превращается в<a href="http://www.twitter.com/something.">@something.</a>

Любые предложения о том, как сделать эту работу?

Ответы на вопрос(1)

Решение Вопроса
$input = preg_replace('/(^|\s)@([a-z0-9_]+)/i',
                      '$1<a href="http://www.twitter.com/$2">@$2</a>',
                       $input);

Вижу это

Это соответствует@ которому предшествует пробел или ничего (когда это в начале).

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

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

Который соответствует только имени твиттера, но только если есть место или ничего до этого.

 Andelas22 янв. 2011 г., 05:48
Спасибо! Работал отлично.
 BudgieInWA22 янв. 2011 г., 06:22
Второй аргумент (ко второму примеру) должен быть<a href="http://www.twitter.com/$1">$1</a>.
 agente_secreto09 февр. 2011 г., 01:50
Эй, я изучаю регулярные выражения, и этот пример очень полезен для меня. Я получаю почти все из первого примера, но не понимаю, что означает / i в конце первого шаблона. кто-то хочет объяснить?
 codaddict09 февр. 2011 г., 06:20
@ 0al0:i в конце делает регулярное выражение нечувствительным к регистру.

Ваш ответ на вопрос