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

Put dash between every third character

提问人:softboxkid 提问时间:12/8/2011 最后编辑:mattcansoftboxkid 更新时间:7/24/2018 访问量:18564

问:

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

评论


答:

46赞 Jon Newmuis 12/8/2011 #1

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

14赞 deceze 12/8/2011 #2

只是:

join('-', str_split($str, 3))
2赞 Prem Kumar Maurya 9/22/2013 #3

在每三个字符之间放置破折号的示例

$string = 'ABCDEFABCDEF';
echo join('-', str_split($string, 4));
echo join('-', str_split($string, 2));
3赞 nggit 7/24/2018 #4

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

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