Справка по PHP Regex для хэштегов - PullRequest
1 голос
/ 25 августа 2009

У меня есть следующая строка:

$str = '#hello how are #you and #you and #you';

Я хотел бы обернуть некоторые html вокруг тех, у которых есть хеш-тег перед ними, например:

echo preg_replace("/#([A-Za-z0-9_]+)(?= )/", "<a href='http://url.com/$1'>$0</a>", $str);

Который выдаст:

# привет как дела # вы и # вы и # вы

Обратите внимание, что каждая URL-ссылка не имеет хеш-тега в ссылке.

Однако, это моя проблема, потому что в конце последнего # нет пробела. Вы не соответствует регулярному выражению и, очевидно, не включены. Я не уверен, что делать на самом деле, так как некоторые могут иметь пробелы после, а некоторые нет, но я не хочу включать пробел в вывод (отсюда (? =)), Но я не знаю что еще можно сделать.

Любая помощь будет принята с благодарностью.

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 25 августа 2009

используйте (\ s | \ Z), это будет соответствовать либо пробелу, либо концу строки

1 голос
/ 25 августа 2009

Вы можете переключить селектор в режим исключения, например ([^,.] +). Таким образом, должно работать для всех экземпляров.

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