Я хочу удалить # из твиттер-хэш-тегов, поэтому:
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):
Более быстрое решение:
$tweet = str_replace('#', '', $tweet)
Не требуется регулярное выражение
1
в заменяющую строку фигурными скобками $tweet = preg_replace('/#([^\s]*)/', '$1', $tweet);