PHP » Quellcode betrachten

Download

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