当角色出现x时间时,是否有能够替换的php函数?
例如
$string="a,b,c,d,e,f,g,h,i,j,k,l";
每3个逗号会附加“\ n \ r”
a,b,c,
d,e,f,
g,h,i,
j,k,l
我写过这个。
function addBreaks($string,$char,$count) {
$ii = 0;
for ( $i = 0; $i < strlen($string); $i++){
if ($string[$i] == $char){
$ii++;
}
if ($ii == $char){
$ii = 0;
}
$string = $string[$i]+"\n\r"+$string[$i+1];
}
return $string;
}
答案 0 :(得分:2)
您可以使用chunk_split():
echo chunk_split($string, 6, '<br />'); //6 because after every third comma so count characters
这似乎可以用任意数量的字母::
$string = "a,b,c,d,easda,f,g,hasd,i,j,k,l";
function split_me($str, $delim, $pos) {
return implode($delim."<br />", array_map(function($arr) use ($delim) {
return implode($delim, $arr);
}, array_chunk(explode($delim, $str), $pos)));
}
echo split_me($string,",", 3);
答案 1 :(得分:2)
无论逗号之间有多少个字母,它都会有效(它会在找到的每个$ count逗号后添加一个中断):
function addLineBreaks($string,$char,$count) {
return preg_replace("/(?:[^$char]+$char){{$count}}/","\\0<br />",$string);
}
使用示例:
echo addLineBreaks("a,b,c,d,e,f,g,h,i,j,k,l",",",3);
答案 2 :(得分:0)
这样的事情可以起作用(非常粗糙):
function addLineBreaks( $str, $n = ',', $x = 3 ) {
$sArr = str_split( $str );
$output = '';
$occ = 0;
foreach( $sArr as $k=>$v ) {
$output .= $v;
if( $v == $n ) {
$occ++;
if( $occ%$x == 0 ) $output .= "\r\n";
}
}
return $output;
}
使用它像:
header("Content-Type:text/plain");
echo addLineBreaks( "a,b,c,d,e,f,g,h,i,j,k,l" );
// outputs:
//a,b,c,
//d,e,f,
//g,h,i,
//j,k,l