P Prime_66 Medlem sedan aug. 2004 290 inlägg Frågan 15 mars 2005 01:00 #1 Jag har en sträng med siffrorna 12356. Jag vill att ettan ska bytas ut mot en 4, 2 mot en 5, 3 mot 2 osv. Följande kod borde väl kunna funka? Men det gör den inte. Den byter vissa av siffrorna fel helt enkelt.
for ($t=0; $t<=5; $t++){
$index = substr($thecode,$t,1);
$digits = array(1, 2, 3, 4, 5, 6);
$newdigits = array(4, 5, 2, 7, 8, 0);
$realcode.= str_replace($digits, $newdigits, $index);
}
Patrik81 Medlem sedan okt. 2001 538 inlägg Hejsan :)
Om koden du vill få ut ($realcode) är 45256 så fick jag följande kod att funka, nästan... :(
$thecode = 12356;
for ($t=0; $t<=5; $t++)
{
$index = substr($thecode,$t,1);
$digits = array(1, 2, 3, 4, 5, 6);
$newdigits = array(4, 5, 2, 7, 8, 0);
$realcode .= str_replace($digits[$t], $newdigits[$t], $index);
}
echo($realcode);
/r: Ursäkta mig, såg just att det borde bli 80 på slutet... vilket inte verkar hända... så det här var ingen bra lösning alls :(
MVH Patrik
dectgap Medlem sedan sep. 2002 1 655 inlägg Prova med
$thecode = '12345';
$index = substr($thecode,$t,1);
$replacements = array('1'=>'4', '2'=>'5', '3'=>'2', '4'=>'7', '5'=>'8', '6'=>'0');
$realcode.= strtr($digits, $newdigits, $index);
Peeer Medlem sedan mars 2002 5 907 inlägg
dectgap skrev:
Prova med
$thecode = '12345';
$index = substr($thecode,$t,1);
$replacements = array('1'=>'4', '2'=>'5', '3'=>'2', '4'=>'7', '5'=>'8', '6'=>'0');
$realcode.= strtr($digits, $newdigits, $index);
Nästan
<?php
$thecode = '12345';
$replacements = array('1'=>'4', '2'=>'5', '3'=>'2', '4'=>'7', '5'=>'8', '6'=>'0');
$realcode = strtr($thecode, $replacements);
echo $realcode;
?>
dectgap Medlem sedan sep. 2002 1 655 inlägg
Peeer skrev:
Nästan
:r
Det blir så lätt fel vid copy-paste, är det enda försvaret jag har.
P Prime_66 Medlem sedan aug. 2004 290 inlägg Japp, thanx. Det funkar. Men en sak som var lustig var att det funkade bara man inte ersatte med siffror med min första metod. så här:
for ($t=0; $t<=5; $t++){
$index = substr($thecode,$t,1);
$digits = array(1, 2, 3, 4, 5, 6);
$newdigits = array("fyra", "femma", "tvåa", "sjua", "åtta", "nolla");
$realcode.= str_replace($digits, $newdigits, $index);
}
fast då fick ju koden i bokstavsform vilket inte var meningen..men men,,nu ere löst iaf :birp
dectgap Medlem sedan sep. 2002 1 655 inlägg
Prime_66 skrev:
Japp, thanx. Det funkar. Men en sak som var lustig var att det funkade bara man inte ersatte med siffror med min första metod.
Problemet är att str_replace även försöker ersätta ersatta tecken.
T ex skulle följande konstruktion göra om alla vokaler till 'q':
$search = array(('a','o','u','å','e','i','y','ä','ö');
$replace = array('o', 'u', 'å', 'e', 'i', 'y', 'ä', 'q');
$str = str_replace($search, $replace, $str);
strtr låter redan ersättningarna vara.
P Prime_66 Medlem sedan aug. 2004 290 inlägg ja, verkar så. men det var ju därför jag hade det i en for loop så den tog tecken per tecken. så att den inte skulle kunna ersätta varje plats mer än en gång. fast den gjorde ju det ändå..