我想在每个第4个字符之后为某个输出添加一个空格,直到字符串的结尾.我试过了:
$str = $rows['value'];
<? echo substr($str, 0, 4) . ' ' . substr($str, 4); ?>
Run Code Online (Sandbox Code Playgroud)
这只是让我获得前4个字符后的空格.
我怎样才能让它在每隔4号后显示出来?
Fel*_*ing 80
你可以使用chunk_split [docs]:
$str = chunk_split($rows['value'], 4, ' ');
Run Code Online (Sandbox Code Playgroud)
如果字符串的长度是四的倍数但您不想要尾随空格,则可以将结果传递给trim.
Ole*_*mak 42
Wordwrap完全符合您的要求:
echo wordwrap('12345678' , 4 , ' ' , true )
Run Code Online (Sandbox Code Playgroud)
将输出:1234 5678
相反,如果你想要每隔一个数字后面的连字符,则将"4"换成"2",并将连字符的空格换成:
echo wordwrap('1234567890' , 2 , '-' , true )
Run Code Online (Sandbox Code Playgroud)
将输出:12-34-56-78-90
小智 9
你有没有看过这个叫做wordwrap的函数? http://us2.php.net/manual/en/function.wordwrap.php
这是一个解决方案.像这样开箱即用.
<?php
$text = "Thiswordissoverylong.";
$newtext = wordwrap($text, 4, "\n", true);
echo "$newtext\n";
?>
Run Code Online (Sandbox Code Playgroud)
这是一个长度不是 4 的倍数(或在我的情况下为 5)的字符串示例。
function space($str, $step, $reverse = false) {
if ($reverse)
return strrev(chunk_split(strrev($str), $step, ' '));
return chunk_split($str, $step, ' ');
}
Run Code Online (Sandbox Code Playgroud)
用 :
echo space("0000000152748541695882", 5);
Run Code Online (Sandbox Code Playgroud)
结果:00000 00152 74854 16958 82
反向模式使用(瑞士计费的“BVR 代码”):
echo space("1400360152748541695882", 5, true);
Run Code Online (Sandbox Code Playgroud)
结果:14 00360 15274 85416 95882
编辑 2021-02-09
也适用于 EAN13 条码格式:
space("7640187670868", 6, true);
Run Code Online (Sandbox Code Playgroud)
结果:7 640187 670868
简短的语法版本:
function space($s=false,$t=0,$r=false){return(!$s)?false:(($r)?trim(strrev(chunk_split(strrev($s),$t,' '))):trim(chunk_split($s,$t,' ')));}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助你们中的一些人。