在每三个字符之间加破折号


Put dash between every third character

我有一个问题,如何把破折号在每3个字符。例如,我想要

ABCDEF turn into ABC-DEF

我有这样的代码:

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

然而,如果我向$string变量(如ABCDEFGHI)添加更多字符,则此代码不工作。如果我使用上面的代码,输出将是:

ABC-DEF GHI

应该使用PHP的str_splitimplode函数

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

简体:

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

大家都没提到wordwrap:

echo wordwrap('ABCDEFGHI', 3, '-', true);

示例

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