[英]PHP Add Space Every 4th Character but ignore when you reach a comma
这是我的台词
AQUA19097444,AQUA43188766,AQUA49556282,AQUA51389151,AQUA57267110,BLUE12811521,BLUE15966728
这是我最终要实现的目标
AQUA 1909 7444,AQUA 4318 8766,AQUA 4955 6282,AQUA 5138 9151,AQUA 5726 7110,BLUE 1281 1521,BLUE 1596 6728
请注意,每四个字符有一个空格,但是如果下一个逗号则不包含空格。
到目前为止,这是我尝试过的:请注意,我在每个循环中
$Raffles[$index] = chunk_split($Raffles[$index], 4, ' ');
这是代码的输出
AQUA 1909 7444 ,AQU A431 8876 6,AQ UA49 5562 82,A QUA5 1389 151, AQUA 5726 7110 ,BLU E128 1152 1,BL UE15 9667 28
如您所见,当它到达逗号时,它会占用一个空格,我希望它忽略
请帮帮我,谢谢您阅读我的问题。
复杂的方法:
$Raffles[$index] = implode(",",array_map(function($p) {return chunk_split($p,4," ");},explode(",",$Raffles[$index])));
(请注意,您可以通过将另一个array_map
包裹在其周围而无需陷入foreach
循环中来array_map
这一点)
黑魔法的方式:
$Raffles[$index] = preg_replace("/([^,]{4})(?!,)(?=.)/","$1 ",$Raffles[$index]);
分解您的字符串,然后遍历它,并使用chunk_split
每四个字符放置一个空格。
$string = 'AQUA19097444,AQUA43188766,AQUA49556282,AQUA51389151,AQUA57267110,BLUE12811521,BLUE15966728';
$exploded_string = explode(',', $string);
foreach($exploded_string as $item){
$result[] = chunk_split($item, 4, ' ');
}
print_r($result);
会给你
Array ( [0] => AQUA 1909 7444
[1] => AQUA 4318 8766
[2] => AQUA 4955 6282
[3] => AQUA 5138 9151
[4] => AQUA 5726 7110
[5] => BLUE 1281 1521
[6] => BLUE 1596 6728 )
如果要将其转换回以逗号分隔的字符串,请使用$result = implode(',', $result);
像下面这样的东西应该起作用...
$string ='AQUA19097444,AQUA43188766,AQUA49556282,AQUA51389151,AQUA57267110,BLUE12811521,BLUE15966728';
$explode = explode(',',$string);
$count = 0;
while (!empty($explode[$count])) {
$var[] = chunk_split($explode[$count], 4, ' ');
$count++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.