Avatar billede Mik2000 Professor
15. februar 2010 - 21:57 Der er 8 kommentarer og
1 løsning

Næste bogstav

Hej

Hvis jeg har nogle bogstaver/tal (enten eller eller kombinationer) f.eks.:
$var = "abg03he9";

Kan man så få den til at gå f.eks. 3 frem (og blot springe tilbage til start hvis den når enden)

Således at:
$var = "abg03he9";
Bliver til
$var = "dej36kh2";

Er det muligt?
Avatar billede andreas13_fam Nybegynder
15. februar 2010 - 22:41 #1
Prøv at se om følgene kan bruges (hvis du mangler mere forklaring må du sige til):


<?php
function convert ($str) {
    $array = array (
        'a' => 'd',
        'b' => 'e',
        'c' => 'f',
        'd' => 'g',
        'e' => 'h',
        'f' => 'i',
        'g' => 'j',
        'h' => 'k',
        'i' => 'l',
        'j' => 'm',
        'k' => 'n',
        'l' => 'o',
        'm' => 'p',
        'n' => 'q',
        'o' => 'r',
        'p' => 's',
        'q' => 't',
        'r' => 'u',
        's' => 'v',
        't' => 'w',
        'u' => 'x',
        'v' => 'y',
        'w' => 'z',
        'x' => 'æ',
        'y' => 'ø',
        'z' => 'å',
        'æ' => 'a',
        'ø' => 'b',
        'å' => 'c',
        '0' => '3',
        '1' => '4',
        '2' => '5',
        '3' => '6',
        '4' => '7',
        '5' => '8',
        '6' => '9',
        '7' => '0',
        '8' => '1',
        '9' => '2'
    );
    $chars = str_split($str);
    $string = '';
    foreach ($chars as $char) {
        if (isset($array[strtolower($char)])) { //hvis bokstavet eller tallet er i arrayet
            if (strtoupper($char) === $char) { //hvis stort bokstab
                $string .= strtoupper($array[ strtolower($char) ]);
            } else {
                $string .= $array[$char];
            }
        } else {
            $string .= $char; //hvis ikke konventer ikke bokstavet eller tallet
        }
    }
    return $string;
}
echo convert('ABG03he9');
?>
Avatar billede arne_v Ekspert
15. februar 2010 - 23:08 #2
Lidt andet approach:

<?php
function convert_help($c, $offset, $trans) {
    $pos = strpos($trans, $c);
    if($pos !== false) {
        return $trans[($pos + $offset) % strlen($trans)];
    } else {
        return $c;
    }
}

function convert($s, $offset) {
    $res = $s;
    for($i = 0; $i < strlen($res); $i++) {
        $res[$i] = convert_help($res[$i], $offset, 'ABCDEFGHIJKLMOPQRSTUVWXYZ');
        $res[$i] = convert_help($res[$i], $offset, 'abcdefghijklmopqrstuvwxyz');
        $res[$i] = convert_help($res[$i], $offset, '0123456789');
    }
    return $res;
}

echo convert('ABG03he9!', 3);
?>
Avatar billede preppydude Nybegynder
16. februar 2010 - 15:58 #3
Her er en anden fremgangsmåde:

<?php
function stepthree($str) {
  $res = "";
  while (strlen($res)<=strlen($str)) {
    $c = $str[strlen($res)];
    $n = ord($c);
    if ($n>=0x61) {
      $res .= chr(($n>=0x78)?($n-23):$n+3);
    } elseif ($n>=0x41) {
      $res .= chr(($n>=0x58)?($n-23):$n+3);
    } else {
      $res .= chr(($n>=0x37)?($n-7):$n+3);
    }
  }
 
  return $res;
}


echo(stepthree("abgxXz03he9")); // dejaAc36kh2
?>
Avatar billede arne_v Ekspert
01. marts 2010 - 00:55 #4
mik?
Avatar billede Mik2000 Professor
18. august 2010 - 20:38 #5
Den har jeg da helt glemt at lukke, men hvis I smider svar så er der point
Avatar billede arne_v Ekspert
18. august 2010 - 20:52 #6
fra mig
Avatar billede arne_v Ekspert
18. august 2010 - 21:04 #7
Skullde de ikke have vaeret delt?
Avatar billede Mik2000 Professor
18. august 2010 - 21:06 #8
Jo det burde de vel egentlig - men håber det går :)
Avatar billede arne_v Ekspert
19. august 2010 - 16:18 #9
andreas og preppy?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester