Если я вас правильно понял, вы хотите указать имя (?) Пользователя между первыми двумя хэштегами и удалить все остальное.Ваше регулярное выражение является жадным, значит, оно захватывает больше, чем следовало бы.Добавьте хэш-тег в список «не совпадать», и он будет захватывать только все, пока не найдет другой хэш-тег.
$str = '#User#,<br><br>Thanks#For providing';
preg_match_all('/#([^#]+)#/mis', $str, $matches);
print_r($matches);
Результат этого кода следующий:
Array
(
[0] => Array
(
[0] => #User#
)
[1] => Array
(
[0] => User
)
)
Вы можете получить доступ к пользователю сейчас с помощью $matches[1][0]