webForumDet fria alternativet

replaca siffror

7 svar · 266 visningar · startad av Prime_66

Prime_66Medlem sedan aug. 2004290 inlägg
#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);
}
Patrik81Medlem sedan okt. 2001538 inlägg
#2

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

dectgapMedlem sedan sep. 20021 655 inlägg
#3

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);
PeeerMedlem sedan mars 20025 907 inlägg
#4

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;
?>
dectgapMedlem sedan sep. 20021 655 inlägg
#5

Peeer skrev:

Nästan

:r
Det blir så lätt fel vid copy-paste, är det enda försvaret jag har.

Prime_66Medlem sedan aug. 2004290 inlägg
#6

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

dectgapMedlem sedan sep. 20021 655 inlägg
#7

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.

Prime_66Medlem sedan aug. 2004290 inlägg
#8

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å..

128 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)