Я пытаюсь разделить строку с хэштегами на один хэштег.
Я использую этот код:
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;