2433

SelfCode en- und decoder v2.0

Quelltext - selfcode.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>
   SelfCode encoder und decoder
  </title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  <meta name="author" content="Georg Land">
  <meta name="keywords" content="Selfcode, encode, decode, encodieren, decodieren, Selfhtml, Selfhtml aktuell">
  <meta name="date" content="2007-11-17T">
  <link rel="stylesheet" type="text/css" href="selfcode.css">
  <script type="text/javascript">
  
  function pruef()
    {
    for(h = 0; document.forms['encode'].elements[h]; ++h)
        {
        if(document.forms['encode'].elements[h].checked == true)
            return true;
        }
    alert('Bitte wenigstens eine Angabe machen!');
    return false;
    }
  
  </script>
 </head>
 <body>
  <span id="tc">2433</span>
  <h1>SelfCode en- und decoder <span id="version">v2.0</span></h1>
<?php
        $nam = array(
            'sh' => 'SelfHTML',
            'fo' => 'SelfHTML Forum',
            'ch' => 'SelfChat',
            'rl' => 'SelfHTML Treffen',
            'br' => 'Lieblingsbrowser',
            'n4' => 'Netscape 4',
            'ie' => 'Internet Explorer',
            'mo' => 'Mozilla',
            'va' => 'Validator',
            'js' => 'JavaScript',
            'de' => 'Frames/Tabellen/CSS (Design-Elemente)',
            'zu' => 'Zugänglichkeit',
            'fl' => 'Flash',
            'ss' => 'Serverseitige Sprachen',
            'ls' => 'Lieblingssprache'
                );
        $erk = array(
            'sh' => array(
                '}' => 'Ich bin Stefan Münz',
                ')' => 'Developer.',
                '|' => 'Featureartikelschreiber.',
                '(' => 'Ich habe nichts damit zu tun.'
                ),
            'fo' => array(
                '}' => 'Ich bin unter den Top-10. Mein Leben besteht im wesentlichen aus dem Forum. Mein monatliches Schreibaufkommen ist mit einem Berufsjournalisten vergleichbar.',
                ')' => 'Ich bin regelmäßiger Poster.',
                '|' => 'Ich komme gelegentlich und habe ein ausgewogenes Fragen-Antwort-Verhältnis.',
                '(' => 'Wenn ich Hilfe brauche, dann sicher nicht da.',
                '{' => 'Alles Idioten, Newbiehasser, Standardfetischisten, E-Mobber.',
                '§' => 'Ich komme nur, um meine Erfolge bei Gericht feiern zu lassen.',
                '#' => 'ANTWORTN ABA SChNELL!!!11',
                '~' => 'Reiner Menscheleiposter.'
                ),
            'ch' => array(
                '}' => 'Ich bin 24 Stunden im Chat. Ich habe kein Leben.',
                ')' => 'Regelmäßiger Besucher, AOP.',
                '|' => 'Gelegentlich.',
                '(' => 'Mir kommen die Leute etwas unfreundlich vor.',
                '{' => 'Chatter sind verwirrte Kick-Fanatiker, die für das Forum zu blöd sind.',
                ']' => 'Nur bei den Eröffnungsfeierlichkeiten oder wenn eine Arthur-P-Abwehr koordiniert wird.',
                '#' => 'Ich bin Terrorkröte.',
                '°' => 'Ich bin regelmäßiger Besucher, aber keiner will mir AOP geben.',
                '~' => 'Warum habe ich eigentlich einen AOP, wenn ich doch nie da bin?',
                '?' => 'Es gibt einen SelfChat?'
                ),
            'rl' => array(
                '}' => 'Ich war fast immer dabei.',
                ')' => 'Regelmäßiger Besucher.',
                '|' => 'Ein oder zwei Besuche.',
                '(' => 'Noch nie dort.',
                '°' => 'Leider hatte ich noch nie Zeit.',
                '?' => 'Es gibt Treffen?'
                ),
            'br' => array(
                '$' => 'IE-Benutzer',
                '>=> 'Gecko (Mozilla, etc.)',
                '<=> 'Opera.',
                '^' => 'Mozilla und Opera.',
                '&' => 'Je nach Bedarf.',
                'µ' => 'Links, Lynx, etc.',
                ']' => 'Quelltextleser.',
                '\\' => 'Konqueror.',
                '~' => 'andere.',
                '?' => 'Duscholux.'
                ),
            'n4' => array(
                '}' => 'Netscape 4 ist die große Liebe meines Lebens. Ich schicke den Entwicklern zu ihren Geburtstagen Blumen. Ich heule bei den neuesten Statistiken.',
                ')' => 'Ich benutze ihn, weil er immer noch der beste ist. Dieses primitive Bashing ist nur lächerlich.',
                '|' => 'Ich muss ihn gelegentlich benutzen, weil er immer noch besser als IE ist. Die Webmaster kann ich zwar verstehen, aber nett finde ich es nicht.',
                '(' => 'Netscape 4 ist ein Horror.',
                '{' => 'Benutzer dieses Browsers sind Wirtschaftsschädlinge, Verrückte oder Rechthaber. Netscape 4 sollte baldestmöglich behördlich verboten werden. Meine Seiten lassen diesen Schrott automatisch abstürzen.',
                '°' => 'Besonders erfreut bin ich nicht, aber ich muss eben die Seiten anpassen.',
                '#' => 'SCHEIßBRAUSER!!!11',
                '~' => 'Dieser Religionskrieg ist doch lächerlich.',
                '&' => 'Eine optimale Version sollte keiner erwarten, aber man sollte diesen Browser berücksichtigen.',
                '?' => 'Netwas?'
                ),
            'ie' => array(
                '}' => 'Ich bin absoluter Fan. Ich habe alle Sicherheitseinstellungen minimiert und vollstes Vertrauen. Ich liebe Microsoft. Alternative Browser sind nur für anarchistische Idioten.',
                ')' => 'Ich benutze den Internet Explorer, weil er der beste Browser ist.',
                '|' => 'Ich benutze ihn ohne irgendwelche Hintergedanken.',
                '(' => 'Ein schlechter Browser.',
                '{' => 'Dieses Stück Programmcode ist gemeingefährlich. Jeder, der so etwas wissentlich verbreitet, ist ein potentieller Schwerverbrecher.',
                '%' => 'Der Marktanteil ist - gemessen an der Qualität - nicht gerechtfertigt und gefährlich.'
                ),
            'mo' => array(
                '}' => 'Mozilla hat mein Leben verändert.',
                ')' => 'Mozilla ist der beste Browser.',
                '|' => 'Nicht schlecht, aber Opera ist besser.',
                '(' => 'Definitiv kein guter Browser.',
                '{' => 'Gutmensch-Browser für weltfremde Spinner.',
                '?' => 'Es heißt &raquo;Godzilla&laquo;.'
                ),
            'va' => array(
                '}' => 'Der Validator ist mein Gott.',
                ')' => 'Ich versuche, nur valide zu schreiben.',
                '|' => 'Nach Möglichkeit.',
                '(' => 'Warum sollte ich valide schreiben?',
                '{' => 'Vorschriftenfanatiker, alle.',
                '?' => 'Valiwas?'
                ),
            'js' => array(
                '}' => 'JavaScript und DHTML sind die besten Erfindungen seit HTML und jede Seite sollte ein aufklappbares DHTML-Menü haben.',
                ')' => 'JavaScript ist cool.',
                '|' => 'Man kann viel sinnvolles mit JavaScript machen, man kann es aber auch mißbrauchen.',
                '(' => 'JavaScript wird zu oft missbraucht, daher ist eher davon abzuraten.',
                '{' => 'JavaScript ist doch sowieso nur etwas für Klicki-Bunti-Webmons^Wmaster'
                ),
            'de' => array(
                '>=> 'CSS-Fanatiker. Tabellen sind böse, Frames gemeingefährlich.',
                ']' => 'CSS!',
                '[' => 'Tabellen aus Bequemlichkeit.',
                '<=> 'Tabellen aus Überzeugung.',
                '/' => 'Framefreund',
                'µ' => 'Design? Da bin ich dagegen.',
                '?' => 'Keine Ahnung.'
                ),
            'zu' => array(
                '}' => 'Alle Webmaster sollten dazu verpflichtet werden, die UNO sollte es zum Menschenrecht machen.',
                ')' => 'Wichtiges Ziel.',
                '|' => 'Sicher überlegenswert.',
                '(' => 'Naja...',
                '{' => 'Unsinn. Hauptsache, ich kann es sehen.',
                '$' => 'Mein Kunde bezahlt eben nicht dafür.',
                ']' => 'Ich bin Chräcker Heller. Meine Meinung lässt sich nicht in einem Satz zusammenfassen.'
                ),
            'fl' => array(
                '}' => 'Die Lösung aller Probleme!',
                ')' => 'Elegantes und effektives Werkzeug.',
                '|' => 'Es gibt viele sinnvolle Einsatzmöglichkeiten.',
                '(' => 'Flash-Skeptiker.',
                '{' => 'Ich hasse Flash. Es hat im Web nichts verloren, weg damit.'
                ),
            'ss' => array(
                '}' => 'Ich programmiere Online-Shops in zwei Stunden.',
                ')' => 'Guter Programmierer.',
                '|' => 'Ich kann kleinere Probleme lösen, bin aber kein Experte.',
                '(' => 'Ich kann aber kaum programmieren',
                '{' => 'Ich kenne immerhin den Begriff.',
                '?' => 'Was ist denn das schon wieder?'
                ),
            'ls' => array(
                '>=> 'Perl (alles andere ist sowieso Kindergarten)',
                ']' => 'Perl.',
                '[' => 'PHP.',
                '<=> 'PHP, Perl ist etwas für hochnäsige Angeber.',
                '$' => 'ASP.',
                'µ' => 'Assembler.',
                '/' => 'JSP.',
                '\\' => 'Coldfusion.',
                '~' => 'andere.',
                '&' => 'Je nach Bedarf.',
                '#' => 'HTML.',
                '?' => 'Ähm...'
                )
            );
if(!isset($_GET['quelltext'])) // Tritt ein, wenn kein Quelltext angezeigt werden soll
{
echo '
  <h2>Decodieren</h2>
';
if(!isset($_GET['decodieren']))
    {
    echo '  <form action="selfcode.php?decodieren" id="decode" method="POST">
   <input type="text" name="code" size="80" id="code">&nbsp;<input type="submit" value="Decodieren!">
  </form>
';
    } else {
    $code trim(((!empty($_POST['code'])) ? $_POST['code'] : $_GET['decodieren'])); // Entfernen der leerzeichen am Anfang und Ende
    echo 'Jetzt auch möglich: Übergabe des Selfcodes via Adresszeile (z.B.: <a href="selfcode.php?decodieren=sh:( fo:|">selfcode.php?decodieren=sh:( fo:|</a>)!<br>';
    if(empty($code)) // Tritt ein, wenn Selfcode leer
        {
        echo 'Ungültiger Selfcode!';
        } else {
        $zcode preg_split('°\s+°is'$code); // Code, der Angezeigt wird
        $code preg_split('°\s+°is'strtolower($code)); // Code mit dem weitergearbeitet wird (wird zu Kleinbuchstaben gemacht)
        echo '
  <dl>';
        foreach($code as $ausg// Überprüft, ob in gesplitteten Arrayteilen etwas richtiges dabei ist
            {
            if(isset($nam[substr($ausg02)]))
                {
                $wahr true;
                break;
                }
            $wahr false;
            }
        echo ($wahr === false) ? '<dt>Ungültiger Selfcode!</dt>''// Wenn nichts richtig ist
        for($h 0; isset($code[$h]); ++$h// Ausgabe der Selfcodeteile in Definition-List
            {
            echo '
   <dt>
    '.((isset($nam[substr($code[$h], 02)])) ? $nam[substr($code[$h], 02)] : '<span style="color:red;font-weight:bold;">Unbekannter Selfcode-Teil</span>:').<span class="selfcode">'.htmlspecialchars(preg_replace('°\\\\+°''\\'$zcode[$h])).'</span>
   </dt>
   <dd style="margin-top:3px;">
    '.((isset($erk[substr($code[$h], 02)][substr($code[$h], -1)]) ? $erk[substr($code[$h], 02)][substr($code[$h], -1)] : '<span style="color:red;">Beschreibung unbekannt!</span>')).'
   </dd>
';
            if(isset($code[$h+1]))
                {
                echo '   <dt>
    <hr>
   </dt>
';
                }
            }
        }
        echo '  </dl>
  <a href="selfcode.php">Zurück</a>
';
    }
echo '
  <h2>Encodieren</h2>
';
if(!isset($_GET['encodieren'])) // Wenn nicht encodiert werden soll
    {
    $haupt = array('Community'              => array('sh''fo''ch''rl'),
                   'Browser'                => array('br''n4''ie''mo'),
                   'Religion'               => array('va''js''de''zu''fl'),
                   'Serverseitige Sprachen' => array('ss''ls')); // Hauptarray für Legends
    echo '  <form action="selfcode.php?encodieren" onSubmit="return pruef()" name="encode" id="encode" method="POST">';
    foreach($haupt as $name => $ausg// Erstellen der Auswahlmöglichkeiten
        {    // Haupt-Fieldsets
        echo '
   <fieldset class="haupt">
    <legend class="haupt">
     '.$name.'
    </legend>
';
        foreach($ausg as $ausg2// Fieldsets eines Einzelbereiches
            {
            echo '
    <fieldset>
     <legend>
      '.$nam[$ausg2].'
     </legend>
     <ul>';
            $h 0;
            foreach($erk[$ausg2] as $name3 => $ausg3// Auswahlmöglichkeiten
                {
                echo '
      <li>
       <input type="radio" id="'.$ausg2.$h.'" name="'.$ausg2.'" value=":'.$name3.'"><label for="'.$ausg2.$h.'"> '.$ausg3.'</label>
      </li>';
                ++$h;
                }
            echo '
     </ul>
    </fieldset>';
            }
        echo '
   </fieldset>';
        }
    echo '
   <input type="submit" value="Encodieren!">&nbsp;<input type="reset" value="Zurücksetzen!">
  </form>';
    } else { // Wenn encodiert werden soll
    if(!empty($_POST)) // Sobald nur eines nicht leer ist...
        {
        foreach($_POST as $name => $ausg// Zusammenstellen des Selfcodes
            {
            $ges[$name] = (!empty($ausg)) ? $name.$ausg.' ' '';
            }
        $ges trim(implode($ges));
        echo '  Dein SelfCode: <span class="selfcode">'.preg_replace('°\\\\+°''\\'$ges).'</span>
   <br>
  <a href="selfcode.php">Zurück</a>
';
        } else { // Wenn nichts angekreuzt wurde
        echo '  Bitte mindestens eine Angabe machen. <a href="selfcode.php">Zurück</a>
';
        }
    }
} elseif(isset($_GET['quelltext'])) { // Wenn Quelltext ausgelesen werden soll
$quell_s file_get_contents('selfcode.php');
$quell_c file_get_contents('selfcode.css');
// Anfang Syntaxhighlighting
$tags '(abbr|acronym|address|applet|base|basefont|bdo|big|blockquote|body|br|button|caption|center|cite|code|colgroup|col|dd|del|dfn|dir|div|dl|dt|em|fieldset|font|form|frameset|frame|h1|h2|h3|h4|h5|h6|head|hr|html|iframe|img|input|ins|isindex|kbd|label|legend|i|link|li|map|menu|meta|noframes|noscript|object|ol|optgroup|option|param|pre|p|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|area|thead|th|title|q|s|tr|tt|u|b|ul|a|var)'// Alle Tags
$quell_s str_replace('<br />'''highlight_string($quell_strue));
$quell_s preg_replace('°(&lt;|&gt;)°',                                                                                                                                                '<span style="color:red;">$1</span>',                                                                                                                                            $quell_s); // < und > werden rot
$quell_s preg_replace(<span style="color:red;">&lt;</span>'.$tags.'([^<>]*)<span style="color:red;">&gt;</span>°is',                                                                '<span style="color:red;">&lt;</span><span style="color:blue;text-decoration:underline;">$1</span>$2<span style="color:red;">&gt;</span>',                                        $quell_s); // Anfangs-Tags werden blau
$quell_s preg_replace(<span style="color:red;">&lt;</span><span style="color:blue;text-decoration:underline;">'.$tags.'</span>([^<>]*)<span style="color:red;">&gt;</span>°is',        '<span style="color:red;">&lt;</span><span style="color:blue;text-decoration:underline;">$1</span><span style="color:#AAF;">$2</span><span style="color:red;">&gt;</span>',        $quell_s); // Atrribute werden hellblau
$quell_s preg_replace('°&quot;(.*)&quot;°is',                                                                                                                                            '&quot;<span style="color:#CCF;border-bottom:1px dashed #CCF;">$1</span>&quot;',                                                                                                $quell_s); // Attributwerte werden noch heller
$quell_s preg_replace(<span style="color:red;">&lt;</span>/'.$tags.'<span style="color:red;">&gt;</span>°is',                                                                        '<span style="color:red;">&lt;</span><span style="color:blue;border-bottom:1px dotted blue;">/$1</span><span style="color:red;">&gt;</span>',                                    $quell_s); // End-Tags werden blau
$quell_s preg_replace(<span style="color:red;">&gt;</span>(.*)<span style="color:red;">&lt;</span>°is',                                                                                '<span style="color:red;">&gt;</span><span style="color:black;">$1</span><span style="color:red;">&lt;</span>',                                                                    $quell_s); // Inhalt wird orange 
$quell_s preg_replace(<span style="color:red;">&lt;</span>!--(.*)--<span style="color:red;">&gt;</span>°is',                                                                        '<span style="color:gray;">&lt;!--$1--&gt;</span>',                                                                                                                                $quell_s); //Kommentare werden Grau
// Ende Syntaxhighlighting
echo '
   <h2>Quelltext - selfcode.php</h2>
   <div class="quelltext">
    <pre><code>'.$quell_s.'</code></pre>
   </div>
   <h2>Quelltext - selfcode.css</h2>
   <div class="quelltext">
    <pre>'.$quell_c.'</pre>
   </div>';
}
?>
  <div style="text-align:center;">&copy; beim glan (2007) | Nach Selfcode Version 1.0 | Ein herzliches Dankeschön an Patrick Andrieu<?php if(!isset($_GET['quelltext'])) echo ' | <a href="selfcode.php?quelltext">Quelltext</a>'; if($_GET) echo ' | <a href="selfcode.php">zurück</a>'?></div>
 </body>
</html>
<!--
Scripts- & Design-Copyright beim glan
Hintergrundbild Copyright bei SelfHTML e.V.

Dieses Script darf kopiert werden, es sollte aber mein Nickname (glan) mit erwähnt werden.
-->

Quelltext - selfcode.css

body { background-color:#FFFFE0; background-image:url(self.gif); /*Copyright by SelfHTML e.V.*/ background-position:left center; background-repeat:no-repeat; background-attachment:fixed; margin:10px 110px; }

ul { list-style:none; }

fieldset.haupt { border:3px ridge gray; margin:30px 0px; }

legend { font-size:17pt; }

legend.haupt { border:3px ridge gray; padding:3px; font-size:20pt; }

h1,h2 { color:#FFFFE0; font-size:26pt; background-color:#444; padding:5px 5px 5px 70px; }

h1 { padding-left:40px; font-size:28pt; }

span#version { font-style:italic; }

input#code { background-color:#FFFFE0; color:black; border:2px ridge gray; }

ul li { margin:5px 0px; }

ul li label { font-size:15pt; }

dl { border:3px ridge gray; padding:10px; }

dd { font-size:14pt; }

dt { font-size:15pt; }

span.selfcode { color:darkred; background-color:#EED; padding:3px; font-size:14pt; }

a:link { color:#A52; font-weight:bold; }

a:visited { color:#A52; font-weight:bold; }

label:hover { color:#A52; background-color:#EEEED0; }

input#pw,#name { background-color:#FFFFE0; border:2px ridge gray; }

div.quelltext { overflow:auto; height:500px; border:2px ridge #FFFFE0; padding:4px; }

span#tc { display:none; }
© beim glan (2007) | Nach Selfcode Version 1.0 | Ein herzliches Dankeschön an Patrick Andrieu | zurück