Miten jossain merkkijonossa voi korvata kaikki pilkut kaksoispisteillä, paitsi jos pikku on sulkujen sisällä?
Esim
$alkup = "yksi, kaksi, kolme (1,2,3), neljä, viisi (3,5), kuusi";
$lopputulos = "yksi: kaksi: kolme (1, 2, 3): neljä: viisi (3, 5): kuusi";
Esim
$alkup = "yksi, kaksi, kolme (1,2,3), neljä, viisi (3,5), kuusi";
$lopputulos = "yksi: kaksi: kolme (1, 2, 3): neljä: viisi (3, 5): kuusi";
Vastaukset 1
Vanhimmat
Sikäli kun ei tarvitse huolehtia sisäkkäisistä suluista, tässä yksi mahdollinen tapa:
$alkup = "yksi, kaksi, kolme (1,2,3), neljä, viisi (3,5), kuusi";
$lopputulos = "";
$tmp = preg_split("/(\([^)]*\))/", $alkup, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach($tmp as $idx => $val) {
___if($idx % 2 == 0) $lopputulos .= str_replace(",", ":", $val);
___else $lopputulos .= $val;
}
echo($lopputulos);
// ==> "yksi: kaksi: kolme (1,2,3): neljä: viisi (3,5): kuusi"