Как удалить # из хэштегов Twitter?

Я хочу удалить # из твиттер-хэш-тегов, поэтому:

Input: I love #winter and #ice-skating Output: I love winter and ice-skating 

Я думал, что это будет трюк, но это не так:

 $tweet = preg_replace('/#[^\s]*/i', '${1}', $tweet); 

Может ли кто-нибудь объяснить мне, почему нет? Что я должен изменить?

Вам нужно окружить часть, которую вы хотите записать в круглых скобках:

 $tweet = preg_replace('/#([\w-]+)/i', '$1', $tweet); 

Смотрите, как работает онлайн: ideone

Я также изменил регулярное выражение, чтобы быть более конкретным, но для еще лучшего регулярного выражения я отсылаю вас к этому вопросу и его ответам (для .NET, но идея такая же в PHP):

  • Лучшее HashTag Regex

Более быстрое решение:

 $tweet = str_replace('#', '', $tweet) 

Не требуется регулярное выражение

  1. Вам нужно иметь подзапись, чтобы она соответствовала строке без знака фунта
  2. Не заверните 1 в заменяющую строку фигурными скобками
 $tweet = preg_replace('/#([^\s]*)/', '$1', $tweet);