Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : String Functions : str_rot13

str_rot13

Perform the rot13 transform on a string (PHP 4 >= 4.2.0, PHP 5)
string str_rot13 ( string str )

Example 2447. str_rot13() example

<?php

echo str_rot13('PHP 4.3.0'); // CUC 4.3.0

?>

Code Examples / Notes » str_rot13

nick

This is recursive function to shift the component letters of a string left or right in the ascii table.
I've left it simple as it suits my needs, but you may want to include error checking for a null string and also put bounds in place, or make it actually rotate around the whole character set rather than just shifting the string up or down.
function asc_shift($string, $amount) {
 $key = substr($string, 0, 1);
 if(strlen($string)==1) {
   return chr(ord($key) + $amount);
 } else {
   return chr(ord($key) + $amount) . asc_shift(substr($string, 1, strlen($string)-1), $amount);
 }
}
For example:
<?php
echo asc_shift("TESTING12345@", 5);
?>
shifts every character up 5 ascii positions, resulting in this string:
YJXYNSL6789:E
In reverse:
<?php
echo asc_shift("YJXYNSL6789:E", -5);
?>
shifts every character down 5 ascii positions, resulting in this string:
TESTING12345@


maximius

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.


arwab

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;
}
?>


electro

<?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);
?>


Change Language


Follow Navioo On Twitter
addcslashes
addslashes
bin2hex
chop
chr
chunk_split
convert_cyr_string
convert_uudecode
convert_uuencode
count_chars
crc32
crypt
echo
explode
fprintf
get_html_translation_table
hebrev
hebrevc
html_entity_decode
htmlentities
htmlspecialchars_decode
htmlspecialchars
implode
join
levenshtein
localeconv
ltrim
md5_file
md5
metaphone
money_format
nl_langinfo
nl2br
number_format
ord
parse_str
print
printf
quoted_printable_decode
quotemeta
rtrim
setlocale
sha1_file
sha1
similar_text
soundex
sprintf
sscanf
str_getcsv
str_ireplace
str_pad
str_repeat
str_replace
str_rot13
str_shuffle
str_split
str_word_count
strcasecmp
strchr
strcmp
strcoll
strcspn
strip_tags
stripcslashes
stripos
stripslashes
stristr
strlen
strnatcasecmp
strnatcmp
strncasecmp
strncmp
strpbrk
strpos
strrchr
strrev
strripos
strrpos
strspn
strstr
strtok
strtolower
strtoupper
strtr
substr_compare
substr_count
substr_replace
substr
trim
ucfirst
ucwords
vfprintf
vprintf
vsprintf
wordwrap
eXTReMe Tracker