replace every second comma of string using php

前端 未结 6 1451
执念已碎
执念已碎 2021-01-06 04:54

I have a string of that displays like this:

1235, 3, 1343, 5, 1234, 1

I need to replace every second comma with a semicolon

i.e.

相关标签:
6条回答
  • 2021-01-06 05:28

    Try this:

    $s = "1235, 3, 1343, 5, 1234, 1";
    $pcs = explode(',', $s);
    
    $flag = false;
    $res = '';
    foreach ($pcs as $item) {
        if (!empty($res)) {
            $res .= $flag ? ',' : ';';
        }
        $flag = !$flag;
        $res .= $item;
    }
    die($res);
    

    It outputs:

    1235, 3; 1343, 5; 1234, 1
    
    0 讨论(0)
  • 2021-01-06 05:31

    Preg_replace() solution

    $str = '1235, 3, 1343, 5, 1234, 1';
    $str = preg_replace('/(.+?),(.+?),/', '$1,$2;', $str);
    echo $str;
    

    Output:

    1235, 3; 1343, 5; 1234, 1
    
    0 讨论(0)
  • 2021-01-06 05:32

    Try this :

    $str     = '1235, 3, 1343, 5, 1234, 1';
    $res_str = array_chunk(explode(",",$str),2);
    foreach( $res_str as &$val){
       $val  = implode(",",$val);
    }
    echo implode(";",$res_str);
    
    0 讨论(0)
  • 2021-01-06 05:34

    Try this:

    <?php
    $string =  '1235, 3, 1343, 5, 1234, 1';
    
    var_dump(nth_replace($string, ',', ';', 2));
    
    // replace all occurences of a single character with another character
    function nth_replace($string, $find, $replace, $n) {
            $count = 0;
            for($i=0; $i<strlen($string); $i++) {
                    if($string[$i] == $find) {
                            $count++;
                    }
                    if($count == $n) {
                            $string[$i] = $replace;
                            $count = 0;
                    }
            }
            return $string;
    }
    ?>
    

    Result:

     1235, 3; 1343, 5; 1234, 1 
    
    0 讨论(0)
  • 2021-01-06 05:36

    try this:

    $s = '1235, 3, 1343, 5, 1234, 1';
    $is_second = false;
    for ($i = 0; $i < strlen($s); $i++) {
        if ($is_second && $s[$i] == ',') {
            $s[$i] = ';';
        } elseif ($s[$i] == ',') {
            $is_second = true;
        }
    }
    echo $s;
    
    0 讨论(0)
  • 2021-01-06 05:38

    Try this:

    <?php
        $str = "1235, 3, 1343, 5, 1234, 1";
        $data = explode(',',$str);
        $counter = 0;
        $new_str = "";
        foreach($data as $key=>$val) {
            if ($counter%2 == 0) {
                $symbol=',';
            }
            else {
                $symbol=';';
            }
            $new_str .= $val.$symbol; 
            $counter++;
        }
        echo $new_str;
        //output::1235, 3; 1343, 5; 1234, 1;
    ?>
    
    0 讨论(0)
提交回复
热议问题