here's my rot function, it works anyway
<?php
/**
* preforms the rotation algorithm on the passed in string
*/
function _rot( $str , $dist=13 ){
if( !is_numeric($dist) || $dist < 0){
$dist = 13;
}
$u_lower = 65; $u_upper = 90;
$l_lower = 97; $l_upper = 122;
$char_count = ($u_upper - $u_lower) +1;
while( $dist > $char_count ){
$dist -= $char_count;
}
$newstr = '';
for( $i=0; $i<strlen($str); ++$i){
$c = ord($str[$i]);
/*
* Check if the character is within the bounds of our function (a-zA-z)
* if not it gets tacked on to the string as is and we move on to the
* next one.
*/
if( $c<$u_lower || $c>$l_upper || ( $c>$u_upper && $c <$l_lower ) ){
$newstr .= chr($c);
continue;
}
$lower = ( $c<=$u_upper?$u_lower:$l_lower);
$upper = ( $c<=$u_upper?$u_upper:$l_upper);
$c += $dist;
if( $c > $upper){
$c = (($c - $upper) + ($lower-1));
}
$newstr .= chr($c);
}
return $newstr;
}
?>
str_rot13
(PHP 4 >= 4.2.0, PHP 5)
str_rot13 — Führt die ROT13-Transformation auf einen String aus
Beschreibung
string str_rot13
( string
$str
)
Diese Funktion führt die ROT13-Transformation auf die Zeichenkette
str aus und liefert den Ergebnisstring zurück.
Die ROT13-Kodierung verschiebt einfach jeden Buchstaben um 13 Stellen im Alphabet. Zeichen, die keine Buchstaben sind, bleiben unverändert. Verschlüsselung und Entschlüsselung werden von derselben Funktion durchgeführt. Bei Übergabe eines verschlüsselten Strings wird der Originalstring zurückgegeben.
Parameter-Liste
-
str -
Die Eingabezeichenkette.
Rückgabewerte
Gibt die ROT13-Version der angegebenen Zeichenkette zurück.
Beispiele
Beispiel #1 str_rot13()-Beispiel
<?php
echo str_rot13('PHP 4.3.0'); // CUC 4.3.0
?>
Changelog
| Version | Beschreibung |
|---|---|
| 4.3.0 |
Das Verhalten dieser Funktion wurde korrigiert. Vor der Korrektur
wurde der str-Parameter selbst ebenfalls
verändert, als wenn er als Reference übergeben worden wäre.
|
str_rot13
arwab at surrealwebs dot com
11-Jul-2007 10:11
11-Jul-2007 10:11
electro at whatever dot com
31-May-2007 09:21
31-May-2007 09:21
<?php
/**
* Rotate each string characters by n positions in ASCII table
* To encode use positive n, to decode - negative.
* With n = 13 (ROT13), encode and decode n can be positive.
*
* @param string $string
* @param integer $n
* @return string
*/
function rotate($string, $n) {
$length = strlen($string);
$result = '';
for($i = 0; $i < $length; $i++) {
$ascii = ord($string{$i});
$rotated = $ascii;
if ($ascii > 64 && $ascii < 91) {
$rotated += $n;
$rotated > 90 && $rotated += -90 + 64;
$rotated < 65 && $rotated += -64 + 90;
} elseif ($ascii > 96 && $ascii < 123) {
$rotated += $n;
$rotated > 122 && $rotated += -122 + 96;
$rotated < 97 && $rotated += -96 + 122;
}
$result .= chr($rotated);
}
return $result;
}
$enc = rotate('string', 6);
echo "Encoded: $enc<br/>\n";
echo 'Decoded: ' . rotate($enc, -6);
?>
maximius at gmail dot com
26-May-2007 01:30
26-May-2007 01:30
Perhaps someone will find this useful ;)
<?
function rotN($s, $n){
$s2 = "";
for($i = 0; $i < strlen($s); $i++){
$char2 = $char = ord($s{$i});
$cap = $char & 32;
$char &= ~ $cap;
$char = $char > 64 && $char < 123 ? (($char - 65 + $n) % 26 + 65) : $char;
$char |= $cap;
if($char < 65 && $char2 > 64 || ($char > 90 && $char < 97 && ($char2 < 91 || $char2 > 96))) $char += 26;
else if($char > 122 && $char2 < 123) $char -= 52;
if(strtoupper(chr($char2)) === chr($char2)) $char = strtoupper(chr($char)); else $char = strtolower(chr($char));
$s2 .= $char;
}
return $s2;
}
?>
It takes any string, $s, and any ROT value, $n. Just like str_rot13, it's both an encoder and decoder. To decode an encoded string, just pass -$n instead of $n.