Я бы посоветовал вам использовать регулярные выражения:
$string = "#FF0000Nick#00FF00name";
$tokens = preg_split('/(#[A-Z0-9]{6})/', $string, -1, PREG_SPLIT_DELIM_CAPTURE);
$ токены будут массивом из 1, 3 или 5 элементов; элемент 0 будет частью имени пользователя перед первым шестнадцатеричным кодом, 1 первым шестнадцатеричным кодом (включая «#»), где 2 является частью текста, имеющего этот цвет, 3 вторым шестнадцатеричным кодом с 4 частью имени цвета вот так.
Если есть только 1 шестнадцатеричный код, $ tokens будет содержать только 3 элемента. Если их нет, $ tokens будет содержать один элемент, который является полным неокрашенным псевдонимом.
echo $tokens[0];
for($x = 1; $x < count($tokens); $x = $x + 2) {
$color = $tokens[$x];
$name_token = $tokens[$x + 1];
echo '<span style="color:' . $color . ';">' . $name_token . '</span>';
}