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

时间:2011-12-08 02:49:56

标签: php string replace substr

我遇到了如何在每个第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

4 个答案:

答案 0 :(得分:31)

您应该使用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

请参阅http://ideone.com/z7epZ了解相关的工作示例。

答案 1 :(得分:13)

简单地:

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

答案 2 :(得分:0)

在第三个字符

之间放置破折号的示例
$string = 'ABCDEFABCDEF';
echo join('-', str_split($string, 4));
echo join('-', str_split($string, 2));

答案 3 :(得分:0)

每个人都没有提到自动换行:

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