Last update: 31.03.2008 | © 2024 Julian von Mendel | Datenschutz
<?php
/*
Author: 2005 Julian von Mendel (http://derjulian.net)
License: LGPL
Provides: class cryptology
function explode_multiple_seperators
function count_words
function count_chars_in_words
function caesar
*/
class cryptology
{
function explode_multiple_seperators($seperators,$string)
{ // explode von $string mit mehreren Trennern $separators
if ($string=="") return array();
if ($seperators=="") return(array($string));
$string = explode(substr($seperators,0,1),$string);
if (strlen($seperators)==1) return($string);
$ret = array();
foreach($string as $val) $ret = array_merge($ret,strings::explode_multiple_seperators(substr($seperators,1),$val));
return($ret);
}
function count_words($text,$seperators=" &.!()-:\"'/;,?\n\t")
{ // Zählt Wörter in einem Text. $seperators sind Satzzeichen.
if ($text=="") return(array());
$text = strings::explode_multiple_seperators($seperators,$text);
$ret = array();
foreach($text as $word)
{
if (!isset($ret[trim($word)]))
{
$ret[trim($word)] = 1;
continue;
}
$ret[trim($word)]++;
}
arsort($ret,SORT_NUMERIC);
return($ret);
}
function count_chars_in_words($text,$len=1,$seperators=" &.!()-:\"'/;,?\n\t")
{ // Zählt Zeichen(ketten) in den Wörtern eines Textes. $seperators sind Satzzeichen. $len gibt an, ob Zeichen gezählt werden, Verkettungen aus zwei Zeichen usw.
if ($text=="" || !is_numeric($len)) return(array());
$text = strings::count_words($text);
$ret = array();
foreach($text as $word=>$wordcount)
for($i=0;$i<(strlen($word)-$len+1);$i++)
{
$key = substr($word,$i,$len);
if (!isset($ret[$key]))
$ret[$key] = $wordcount;
else
$ret[$key] += $wordcount;
}
arsort($ret,SORT_NUMERIC);
return($ret);
}
function caesar($text,$far=1)
{ // Cäsar-Verschiebung um $far Zeichen
for($i=0,$new="";$i<strlen($text);$i++)
{ // Alle Zeichen durchgehen
// Momentanes Zeichen als ASCII-Code extrahieren
$char = ord($text[$i]);
if ($char >= 97 && $char <= 122)
{ // Kleinbuchstaben
$upper = 0;
$char -= 96;
}
elseif ($char >= 65 && $char <= 90)
{ // Großbuchstaben
$upper = 1;
$char -= 64;
}
else
{ // Andere Zeichen
$upper = 2;
}
if ($upper != 2)
{ // Wenn normaler Buchstabe
$char += $far; // Verschieben
if ($char >= 26) $char = ($char-1)%26+1;
$char += 96; // Wieder in korrekten ASCII-Code verwandeln
if ($upper == 1) $char -= 32;
}
$new .= chr($char);
}
return($new);
}
}
?>
© 2009 Julian von Mendel (http://derjulian.net) | Datum: 15.10.2024