Поместите тире между каждым третьим символом

У меня возникла проблема, как поставить тире в каждом третьем символе. Например, я хочу

ABCDEF turn into ABC-DEF

У меня есть этот код:

$string = 'ABCDEF';
echo substr_replace(chunk_split($string,3),'-','3','2');
// the output is ABC-DEF

Однако этот код не работает, если я добавляю больше символов к строковой переменной $, например ABCDEFGHI. Если я использую вышеуказанный код, выход будет:

ABC-DEF GHI

Ответ 1

Вы должны использовать PHP str_split и implode.

function hyphenate($str) {
    return implode("-", str_split($str, 3));
}

echo hyphenate("ABCDEF");       // prints ABC-DEF
echo hyphenate("ABCDEFGHI");    // prints ABC-DEF-GHI
echo hyphenate("ABCDEFGHIJKL"); // prints ABC-DEF-GHI-JKL

См. http://ideone.com/z7epZ для рабочего примера этого.

Ответ 2

Просто:

join('-', str_split($str, 3))

Ответ 3

Пример установки тире между каждым третьим символом

$string = 'ABCDEFABCDEF';
echo join('-', str_split($string, 4));
echo join('-', str_split($string, 2));