замяніць кожную другую коску ў радок з дапамогай PHP

У мяне ёсць радок, якая адлюстроўвае, як гэта:

1235, 3, 1343, 5, 1234, 1

Мне трэба замяніць кожную другую коску кропкай з коскі

гэта значыць

1235, 3; 1343, 5; 1234, 1

The string length will always be different but will follow the same pattern as the above гэта значыць digits comma space digits comma space, etc.

Як я магу зрабіць гэта з дапамогай PHP? Гэта магчыма?

Дзякуючы.

1
Вядома, гэта магчыма, трывіяльнай нават. Бо гэта месца для <�я> прафесійныя або энтузіяст праграмістаў , вы павінны быць у стане высветліць, адзін з многіх магчымых спосабаў на працягу некалькіх хвілін.
дададзена аўтар deceze, крыніца
праверыць маё preg_replace рашэнне гэта самы кароткі і прачытаць аб гэтай функцыі, таму што гэта сапраўды магутны, калі ён ідзе да Regex.
дададзена аўтар Robert, крыніца
праверыць маё preg_replace рашэнне гэта самы кароткі і прачытаць аб гэтай функцыі, таму што гэта сапраўды магутны, калі ён ідзе да Regex.
дададзена аўтар Robert, крыніца
На жаль, мой дрэнны. Шаблон павінен быць /(. *?), (. *?),/ замест /(. *), (. *),/.
дададзена аўтар Leri, крыніца
На жаль, мой дрэнны. Шаблон павінен быць /(. *?), (. *?),/ замест /(. *), (. *),/.
дададзена аўтар Leri, крыніца
Вы маглі б паспрабаваць нешта накшталт: $ заменены = preg_replace ( '/(.*),(.*),/', '$ 1, $ 2;', $ strToReplace); І я згодны з @deceze , Вы павінны паспрабаваць вырашыць свае праблемы самастойна.
дададзена аўтар Leri, крыніца
Вы маглі б паспрабаваць нешта накшталт: $ заменены = preg_replace ( '/(.*),(.*),/', '$ 1, $ 2;', $ strToReplace); І я згодны з @deceze , Вы павінны паспрабаваць вырашыць свае праблемы самастойна.
дададзена аўтар Leri, крыніца
я згодны ёсць шмат спосабаў для дасягнення гэтай мэты! Вы павінны паспрабаваць вырашыць гэтую праблему, то, магчыма, вярнуцца да нас і спытаць, калі ёсць больш эфектыўны спосаб зрабіць гэта.
дададзена аўтар MadDokMike, крыніца

11 адказы

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
6
дададзена
Гэта <�я> самы кароткі рашэнне праблемы;)
дададзена аўтар Kai Noack, крыніца
Хтосьці, хто downvoted гэтага адказу можа растлумачыць, чаму? :)
дададзена аўтар Robert, крыніца
Гэта, безумоўна, лепшае рашэнне
дададзена аўтар Jordan Hudson, крыніца

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
6
дададзена
Гэта <�я> самы кароткі рашэнне праблемы;)
дададзена аўтар Kai Noack, крыніца
Хтосьці, хто downvoted гэтага адказу можа растлумачыць, чаму? :)
дададзена аўтар Robert, крыніца
Гэта, безумоўна, лепшае рашэнне
дададзена аўтар Jordan Hudson, крыніца

Паспрабуйце гэта:

$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);
4
дададзена

Паспрабуйце гэта:

$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);
4
дададзена

Паспрабуйце гэта:

$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);

Ён выводзіць:

1235, 3; 1343, 5; 1234, 1
2
дададзена

Паспрабуйце гэта:

$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);

Ён выводзіць:

1235, 3; 1343, 5; 1234, 1
2
дададзена

Паспрабуйце гэта:

<?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

Вынік:

 1235, 3; 1343, 5; 1234, 1 
2
дададзена
Майце на ўвазе, што $ знайсці і $ замяніць можа быць толькі адзін персанаж доўга.
дададзена аўтар Kai Noack, крыніца
@JackPhp Сардэчна запрашаем .. З Днём Coding наперадзе :)
дададзена аўтар Vijaya Pandey, крыніца
дзякуючы яго добрай дапамогай для мяне ...
дададзена аўтар Jack Php, крыніца

Паспрабуйце гэта:

<?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

Вынік:

 1235, 3; 1343, 5; 1234, 1 
2
дададзена
Майце на ўвазе, што $ знайсці і $ замяніць можа быць толькі адзін персанаж доўга.
дададзена аўтар Kai Noack, крыніца
@JackPhp Сардэчна запрашаем .. З Днём Coding наперадзе :)
дададзена аўтар Vijaya Pandey, крыніца
дзякуючы яго добрай дапамогай для мяне ...
дададзена аўтар Jack Php, крыніца

U можа паспрабаваць, як гэта

<?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;
?>
1
дададзена

паспрабуйце гэта:

$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;
1
дададзена

паспрабуйце гэта:

$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;
1
дададзена