Строка хештейнов PHP без пробелов не делится на хэштеги

Я пытаюсь разделить строку с хэштегами на один хэштег.

Я использую этот код:

preg_match_all('/#([^\s]+)/', $str, $matches); #test #test #test #example 

Это прекрасно работает, если пользователь вставляет хэштеги с пробелами. Но как быть, если они следуют друг за другом напрямую?

 #test#test#test#example 

Попробуй это:

 preg_match_all('/#(\w+)/', $str, $matches); 

Пример:

 <?php $str = '#test #test2 #123 qwe asd #rere#dada'; preg_match_all('/#(\w+)/', $str, $matches); var_export($matches); 

Вывод:

 array ( 0 => array ( 0 => '#test', 1 => '#test2', 2 => '#123', 3 => '#rere', 4 => '#dada', ), 1 => array ( 0 => 'test', 1 => 'test2', 2 => '123', 3 => 'rere', 4 => 'dada', ), ) 

Я думаю, что изучение RegEx поможет вам решить эти проблемы.

Вы могли бы сделать

 $tags = explode('#', $string); foreach($tags as $key => $tag) $tags[$key] = '#' . $tag;