<?php
# Shift a letter by the designated amount, regardless of case
function shiftLetter($c,$shift) {
    $code = ord($c);
    if (($code>=65) && ($code<=90)) {
        $code = ($code+$shift-39)%26+65;
    } elseif (($code>=97) && ($code<=122)) {
        $code = ($code+$shift-71)%26+97;
    }
    return chr($code);
}

# Shift all characters in a message by the designated amount, regardless of case
function shiftMessage($message,$shift) {
    $result = "";
    foreach (str_split($message) as $c) {
        $result = $result.shiftLetter($c,$shift);
    }
    return $result;
}

# Shift all characters by 3 places right
function encipher($message) {
    return shiftMessage($message,3);
}

# Shift all characters by 3 places left
function decipher($message) {
    return shiftMessage($message,-3);
}

$msg = "This is an amazing secret message!";
echo encipher($msg)."\n";
echo decipher(encipher($msg))."\n";
?>