繁体   English   中英

PHP每隔第四个字符添加一个空格,但是在遇到逗号时忽略

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM