PHP每隔4个字符添加一个空格,但是当你到达逗号时忽略它

时间:2014-09-04 17:48:47

标签: php

这是我的行

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

请注意,每4个字符有空格,但如果下一个逗号则不包含空格。

这是我到目前为止所尝试的:注意我在每个循环中都是

$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

正如你所看到的,当它到达我想要忽略的逗号

时它会占用一个空格

请帮帮我,谢谢你阅读我的问题。

3 个答案:

答案 0 :(得分:4)

复杂的方式:

$Raffles[$index] = implode(",",array_map(function($p) {return chunk_split($p,4," ");},explode(",",$Raffles[$index])));

(请注意,您可以通过在其周围包裹另一个foreach而不在array_map循环中执行此操作。

黑魔法:

$Raffles[$index] = preg_replace("/([^,]{4})(?!,)(?=.)/","$1 ",$Raffles[$index]);

答案 1 :(得分:2)

分解你的字符串,然后遍历它并使用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);

答案 2 :(得分:-1)

下面的内容应该有效...

    $string ='AQUA19097444,AQUA43188766,AQUA49556282,AQUA51389151,AQUA57267110,BLUE12811521,BLUE15966728';
    $explode = explode(',',$string);

    $count = 0;

    while (!empty($explode[$count])) {
        $var[] = chunk_split($explode[$count], 4, ' ');
        $count++;
    }