L0L Master^^: array zeugs, was is hier falsch?

[code lang="php"]<?php
$text= ($_POST["uce"]);
$array_1 = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", "!", "?", ".", ",", "1", "2", "3", "4", "5", "6", "7", "8", "9", "/", "(", ")", "&", "+", "-", "%", "*",);
$array_2 = array("/", "|3", "(", "|)", "€", "|=", "&", "|-|", "!", "_|", "|{", "|_", "//", "||", "()", "|>", "O,", "|2", "$", "+", "[_]", "/", "VV", "}{", "'/", "*/_", "/", "|3", "(", "|)", "€", "|=", "&", "|-|", "!", "_|", "|{", "|_", "//", "||", "()", "|>", "O,", "|2", "$", "+", "[_]", "/", "VV", "}{", "'/", "*/_", "&nbsp;&nbsp;", "!", "?", ".", ",", "1", "2", "3", "4", "5", "6", "7", "8", "9", "/", "&", "+", "-", "%", "*");
for ($i=0;$i<strlen($text);$i++)
$text[$i]=$array_2[array_search($text[$i],$array_1)];
echo $text;
?>[/php]

irgentwie kommt da immer:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /data/apache/users/kilu.de/setamagiga/www/php/leet/leet/uce.php on line 4

Ich hab aber den oberen teil 1:1 von einem Ähnlichen funktionstüchtigen script...

Ich was das UCE nirgents gerne gesehen wird, aber ich würd gerne einen Coder und einer Decoder basteln, einfach zum spass!

danke
l.g. tom

  1. Mahlzeit L0L Master^^,

    [code lang="php"]
    $array_1 = array([...], "%", "*",);

    -----------------------------------^

    irgentwie kommt da immer:
    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /data/apache/users/kilu.de/setamagiga/www/php/leet/leet/uce.php on line 4

    Du hast uns zwar nicht gesagt, welche Deine Zeilen Zeile 4 ist, aber es ist ja auch recht offensichtlich, wo der Fehler liegt ...

    Ich hab aber den oberen teil 1:1 von einem Ähnlichen funktionstüchtigen script...

    Ich wette um 1.000 €, dass nicht!

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Auch dir ein Mahlzeit^^, und danke für die schnelle antwort!

      Mahlzeit L0L Master^^,

      [code lang="php"]
      $array_1 = array([...], "%", "*",);
      -----------------------------------^
      irgentwie kommt da immer:
      Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /data/apache/users/kilu.de/setamagiga/www/php/leet/leet/uce.php on line 4

      Du hast uns zwar nicht gesagt, welche Deine Zeilen Zeile 4 ist, aber es >>ist ja auch recht offensichtlich, wo der Fehler liegt ...

      Ok da hast du recht, das is im andren script so wie du sagst, trotzdem geht es noch immer nicht, und gibt den selben fehler aus!

      das mit der line, ich denke das müsste die array 2 sein, den davor sind 4 zeilenumbrüche...

      kann es sein das ich keine { } [ ] ( ) und sowas verwenden kann?

      Ich hab aber den oberen teil 1:1 von einem Ähnlichen funktionstüchtigen script...

      Ich wette um 1.000 €, dass nicht!

      ich halt mich leiber zurück mit meinen "ganz sicher" aussagen^^

      MfG,
      EKKi

      greez
      tom

      1. $array_1 = array([...], "%", "*",);
        -----------------------------------^

        mach einfach das Komma vor der schließenden Klammer weg...

        --
        Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
        1. $array_1 = array([...], "%", "*",);
          -----------------------------------^

          mach einfach das Komma vor der schließenden Klammer weg...

          vorher soll eins hin jetzt weg!?!?

          ändert trotzdem nichts....

          greez

          1. $array_1 = array([...], "%", "*",);
            -----------------------------------^

            mach einfach das Komma vor der schließenden Klammer weg...

            vorher soll eins hin jetzt weg!?!?

            ändert trotzdem nichts....

            greez

            im funktionstüchtigen script sind da diese:

            $array_1 = array([...], "%", "*",);
            -----------------------------------^

            beistreiche am ende!

            1. im funktionstüchtigen script sind da diese:

              $array_1 = array([...], "%", "*",);
              -----------------------------------^
              beistreiche am ende!

              ums mal anzumerken: diese schreibweise ist in der tat kein fehler (mein php 5.2.x meckert nicht):

              array('wert','wert','wert','wert',);

              array(
                'a' => 'wert',
                'b' => 'wert',
                'c' => 'wert',
                'd' => 'wert',
              );

              beide beispiele oben grade ausprobiert, funktioneren bei mir ohne fehlermeldung - der beistrich hinten dran ist aber etwas verwirrend, da eine auflistung die trennzeichen nur zwischen den elementen haben sollte

              spätestens, wenn man zb den string "wert,wert,wert,wert," hat und daraus mit implode ein array erzeugt, hat man einen leeren eintrag zu viel im array ;)

              1. im funktionstüchtigen script sind da diese:

                $array_1 = array([...], "%", "*",);
                -----------------------------------^
                beistreiche am ende!

                ums mal anzumerken: diese schreibweise ist in der tat kein fehler (mein php 5.2.x meckert nicht):

                array('wert','wert','wert','wert',);

                array(
                  'a' => 'wert',
                  'b' => 'wert',
                  'c' => 'wert',
                  'd' => 'wert',
                );

                beide beispiele oben grade ausprobiert, funktioneren bei mir ohne fehlermeldung - der beistrich hinten dran ist aber etwas verwirrend, da eine auflistung die trennzeichen nur zwischen den elementen haben sollte

                spätestens, wenn man zb den string "wert,wert,wert,wert," hat und daraus mit implode ein array erzeugt, hat man einen leeren eintrag zu viel im array ;)

                könntest du dan vieleicht mal das ganze script antesten?

                <?php  
                $text= ($_POST["uce"]);  
                $array_1 = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", "!", "?", ".", ",", "1", "2", "3", "4", "5", "6", "7", "8", "9", "/", "&", "+", "-", "%", "*");  
                $array_2 = array("/\", "|3", "(", "|)", "€", "|=", "&", "|-|", "!", "_|", "|{", "|_", "/\/\", "|\|", "()", "|>", "O,", "|2", "$", "+", "[_]", "\/", "VV", "}{", "'/", "*/_", "/\", "|3", "(", "|)", "€", "|=", "&", "|-|", "!", "_|", "|{", "|_", "/\/\", "|\|", "()", "|>", "O,", "|2", "$", "+", "[_]", "\/", "VV", "}{", "'/", "*/_", "&nbsp;&nbsp;", "!", "?", ".", ",", "1", "2", "3", "4", "5", "6", "7", "8", "9", "/", "&", "+", "-", "%", "*");  
                for ($i=0;$i<strlen($text);$i++)  
                $text[$i]=$array_2[array_search($text[$i],$array_1)];  
                echo $text;  
                ?>
                

                och versteh nämlich überhaupt nicht mehr wo ich noch nach einem fehler suchen soll....

                man dankt

                greez

                1. och versteh nämlich überhaupt nicht mehr wo ich noch nach einem fehler suchen soll....

                  ich hab hier schon eine antwort geliefert

                  wie man in österreich so schön sagt: "bei dem code bekommtst gleich beim reinschaun a watschn ins gsicht" - wenn du beschreibst, was du machen willst, lässt sich dein irrer code (sorry) ggf auf ein oder zwei verständliche zeilen reduzieren

                  1. ich will buchstaben in uce umschreiben
                    http://de.wikipedia.org/wiki/Leetspeak

                    anders gesagt diese "anti-spamfilter" bzw. "kiddy hacker" sprache
                    also sollen alle buchstaben durch zeichenfolgen ersetzt werden, ich denke nicht das das einfacher geht muss ja immerhin JEDEN buchstaben ersetzen

                    ich hab jetzt mal alle () und /\ weck gmacht jetzt geht er...
                    ich komm aber ohne die nicht aus... weis wer was?

                    l.g.

                    1. noch das problem das er bei sonderzeichen wie:

                      &uuml;

                      nur das

                      &

                      animmt... wie soll ich da machen?

                      greez

                      1. noch das problem das er bei sonderzeichen wie:

                        &uuml;

                        nur das

                        &

                        animmt... wie soll ich da machen?

                        du sollst &uuml; nach möglichkeit garnicht im code haben
                        http://www.w3.org/International/questions/qa-escapes.de.php

                        1. noch das problem das er bei sonderzeichen wie:

                          &uuml;

                          nur das

                          &

                          animmt... wie soll ich da machen?
                          du sollst &uuml; nach möglichkeit garnicht im code haben
                          http://www.w3.org/International/questions/qa-escapes.de.php

                          also ist das ganze projekt sozusagen sowieso hinfällig... schade...

                          greez, und danke! weider viel gelernt^^

                          1. also ist das ganze projekt sozusagen sowieso hinfällig... schade...

                            nein, wieso - auch um derartigen müll auszubüglen gibts funktionen in php

                            htmlentities() bzw die für dich interessanter umkehrfunktion html_entity_decode()

                            1. also ist das ganze projekt sozusagen sowieso hinfällig... schade...

                              nein, wieso - auch um derartigen müll auszubüglen gibts funktionen in php

                              htmlentities() bzw die für dich interessanter umkehrfunktion html_entity_decode()

                              wow coool danke

                              mal sehen ob mir die google maschine mehr zum einsatz davon sagt^^

                              l.g.!

                              1. mal sehen ob mir die google maschine mehr zum einsatz davon sagt^^

                                http://php.net/NAME_DER_FUNKION ist hilfreicher als google ;)

          2. Mahlzeit Lol Master,

            $array_1 = array([...], "%", "*",);
            -----------------------------------^

            mach einfach das Komma vor der schließenden Klammer weg...

            vorher soll eins hin jetzt weg!?!?

            Da stand eins und das war falsch - wieso sollte bei einem Array (das eine Liste gleicher oder gleichartiger Elemente ist) nach dem letzten Element noch ein Komma, das gemeinhin ZWISCHEN zwei Elementen steht, vorkommen?

            ändert trotzdem nichts....

            Dann hast Du noch einen anderen Fehler, den Du uns allerdings - warum auch immer - verschweigst. Wenn Du 'ne Runde Glaskugeln verteilst, könnte man Dir vielleicht auch helfen, ohne dass Du uns sagst, was genau eigentlich schiefgeht ...

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Dann hast Du noch einen anderen Fehler, den Du uns allerdings - warum auch immer - verschweigst. Wenn Du 'ne Runde Glaskugeln verteilst, könnte man Dir vielleicht auch helfen, ohne dass Du uns sagst, was genau eigentlich schiefgeht ...

              ja is eigentlich klar, es geht beim funktionstüchtigen mit oder ohne , am ende...

              aber welchen fehler soll ich den verschweigen?
              ich hab das komplette script gepostet!
              und das is in einer eigenen datei, die nur das eine script auswertet, da kann ich nix verheimlichen!

              1. ich hab das komplette script gepostet!

                dann ists vielleicht dieser hier:
                [...] "9", "/", "(", ")" [...]
                ersetze "/" mal durch "/" - ggf ein escape-probleme

                im übrigen tust du dir leichter, wenn du versuchst einfachen code zu schreiben - du willst offenbar ein array mit bestimmten zeichen befüllen - ggf wäre aber ein regulärer ausdruck besser für dich geeignet?

                1. ich hab das komplette script gepostet!
                  dann ists vielleicht dieser hier:
                  [...] "9", "/", "(", ")" [...]
                  ersetze "/" mal durch "/" - ggf ein escape-probleme

                  im übrigen tust du dir leichter, wenn du versuchst einfachen code zu schreiben - du willst offenbar ein array mit bestimmten zeichen befüllen - ggf wäre aber ein regulärer ausdruck besser für dich geeignet?

                  regulärer ausdruck??

                  nja danke, geht aber auch nicht...

                  1. regulärer ausdruck??

                    wenn du beschreibst, was du eigentlich machnen willst - nach bestimmten zeichen suchen? einen klartext in pseudo-l337 übersetzen? usw könnte man ggf eine besser lösung finden, als die aktuelle

                    nja danke, geht aber auch nicht...

                    ggf sind noch mehr fehler, der hier zb
                    array("/",
                    daraus gehört auch array("/", gemacht

                    1. regulärer ausdruck??
                      wenn du beschreibst, was du eigentlich machnen willst - nach bestimmten zeichen suchen? einen klartext in pseudo-l337 übersetzen? usw könnte man ggf eine besser lösung finden, als die aktuelle

                      1337 geht schon einwandfrei, da muss man ja nur ein paar buchstaben durch zahlen ersetzen

                      das sie so ne schrift das z.b. Viagra durch /iagra durch den spamfilter kommt... aber halt ins extreme das jeder buchstabe "übersetzt" wird

                      nja danke, geht aber auch nicht...
                      ggf sind noch mehr fehler, der hier zb
                      array("/",
                      daraus gehört auch array("/", gemacht

                      also um es verständlich für mich zu sagen ich darf "" aber kein "/" oder?

                      greez

                      1. also um es verständlich für mich zu sagen ich darf "" aber kein "/" oder?

                        unter anderem - ein backslash ist in php ein steuerzeichen und muss entsprechend maskiert/escaped werden
                        http://www.perun.net/2004/04/16/php-lernen-6-escape-zeichen/

                        zu deinem eigentlichen problem:
                        das hier ist wesentlich kürzer als dein foreach-array-search-konstrukt

                        $subject = "ich bin ein leet-text mit viel viagra und penis-enlargement-pills";
                        $search = array('L', 'E', 'T');
                        $replace = array('1', '3', '7');
                        $subject = str_replace($search, $replace, $subject);

                        1. also um es verständlich für mich zu sagen ich darf "" aber kein "/" oder?

                          unter anderem - ein backslash ist in php ein steuerzeichen und muss entsprechend maskiert/escaped werden
                          http://www.perun.net/2004/04/16/php-lernen-6-escape-zeichen/

                          zu deinem eigentlichen problem:
                          das hier ist wesentlich kürzer als dein foreach-array-search-konstrukt

                          $subject = "ich bin ein leet-text mit viel viagra und penis-enlargement-pills";
                          $search = array('L', 'E', 'T');
                          $replace = array('1', '3', '7');
                          $subject = str_replace($search, $replace, $subject);

                          wow auch hier nochmal danke!

                        2. Salut!

                          Deine beflissene Art zu helfen in allen Ehren, aber Du hast die Intention des OP verstanden, oder?

                          au relire

                          Sven aus M.

                          1. Deine beflissene Art zu helfen in allen Ehren, aber Du hast die Intention des OP verstanden, oder?

                            natürlich, aber der bayessche algorithmus bzw spamassassin wird ihm schon das fürchten lehren ;) ich bezweifle, dass diese techniken noch erfolg haben - ich bekomm schon lange keine werbemails für "63n3r1c /!46r4" mehr ;)

                            1. Hallo.

                              ich bekomm schon lange keine werbemails für "63n3r1c /!46r4" mehr ;)

                              Und ich Idiot habe das immer für eine Fehlermeldung gehalten.
                              MfG, at

                      2. Salut!

                        regulärer ausdruck??
                        1337 geht schon einwandfrei[..]
                        das sie so ne schrift das z.b. Viagra durch /iagra durch den spamfilter kommt... [..]                                          ^^^^^^^^^^^^^^^^

                        Und genau hier endet meine Beritschaft zur Mithilfe an Deiner "Unternehmung"

                        au relire

                        Sven aus M.

                        1. Salut!

                          Und genau hier endet meine Beritschaft

                          Und meine Bereitschaft auch!

                          au relire

                          Sven aus M.

            2. echo $begrüßung;

              $array_1 = array([...], "%", "*",);
              Da stand eins und das war falsch - wieso sollte bei einem Array (das eine Liste gleicher oder gleichartiger Elemente ist) nach dem letzten Element noch ein Komma, das gemeinhin ZWISCHEN zwei Elementen steht, vorkommen?

              Weil es nicht stört. Ein Komma hinterm letzten Element wird weder als Syntax-Fehler angezählt noch erzeugt es ein leeres Element dahinter. Man kann es sehr gut für folgenden Fall verwenden (bei dem die Formatierung des Quelltextes eine Rolle spielt).

              $foo = array(
                  'a' => 'b',
                  'c' => 'd',
                  'e' => 'f'
                );

              So ist es gemäß landläufiger Meinung korrekt. Entfernt man nun das e-Element aus dem Quelltext ergibt sich

              $foo = array(
                  'a' => 'b',
                  'c' => 'd',
                );

              Man müssten nun eigentlich auch noch den (zugegeben geringen) Aufwand treiben, das Komma zu entfernen.

              $foo = array(
                  'a' => 'b',
                  'c' => 'd'
                );

              Jedoch muss man beim Hinzufügen einer neuen Zeile per Copy'n'Paste'n'Change einer bereits vorhandenen Zeile das "fehlende" Komma berücksichtigen. Ist hingegen jede Zeile mit einem Komma abgeschlossen, muss man sich darüber keine Gedanken machen, weder eins hinzufügen noch eins entfernen.

              echo "$verabschiedung $name";

      2. Hi,

        kann es sein das ich keine { } [ ] ( ) und sowas verwenden kann?

        Ja, es kann sein, dass du das nicht kannst, im Sinne von "keine Ahnung, wie man sie syntaktisch korrekt verwendet".

        MfG ChrisB

        --
        "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
  2. echo $begrüßung;

    <?php

    ?>[/php]

    Wenn du die [code]-Auszeichnung mittels der Vorschaufunktion geprüft hättest, könnte dir aufgefallen sein, dass sie aufgrund des falschen Abschlusses nicht tut.

    [code lang=php]$array_1 = array("a", "b", "c", /* Rest weggelassen /);
    $array_2 = array("/", "|3", "(", /
    Rest weggelassen */ );

      
    Hättest du die Auszeichnung richtig notiert, wäre dir (oder den anderen) vielleicht aufgefallen, dass an einer bestimmten Stelle die Farben nicht mehr passen. (Wobei dir das auch in einem Editor mit Syntax-Unterstützung hätte auffallen können.) Diese Stelle ist diejenige mit dem Syntax-Fehler.  
      
    In jenem Posting <https://forum.selfhtml.org/?t=173001&m=1134906> ist dir die ~~~
    -Auszeichnung gelungen, aber du hast den Farbunterschied nicht bemerkt. suit hat es auch nicht bemerkt und dich in die falsche Spur geschickt (/ statt \).  
      
    Lies dir am besten (nochmal) das PHP-Handbuch-Kapitel zur [link:http://de.php.net/manual/en/language.types.string.php@title=String-Notation] durch, und beachte dann die 11 Stellen, an denen du das Escape-Zeichen escapen musst.  
      
    
    > $text= ($_POST["uce"]);  
      
    Mal angenommen, dass in $_POST["uce"] (mit den überflüssigen Klammern drumrum) ein String steht (könnte ja auch ein Array sein), der hier nach $text kopiert wird, dann könnte man mit $text[x] auf das x. Zeichen zugreifen. Lesend und schreibend.  
      
    
    > $text[$i]=$array_2[array_search($text[$i],$array_1)];  
      
    Man kann aber nicht mehrere Zeichen an die Stelle eines einzelnen Zeichens schreiben. PHP schiebt dir auch nicht den Rest nach hinten, um Platz zu machen.  
      
    [code lang=php]$array_1 = array("a", "b", "c", );  
    $array_2 = array("/\\", "|3", "(", );
    

    Wenn man zusammenhängende Daten hat, dann ist es meist ungünstig, sie in mehrere Strukturen aufzuteilen. Wenn du in $array_1 an Position x ein Zeichen hinzufügen möchtest, musst du in $array_2 mitzählen oder anderweitig ermitteln, wo dort Position x ist. PHP kennt assoziative Arrays, wo also ein Wert einem Schlüssel zugeordnet ist. Da sieht man dann auch deutlich an der Notation was zu wem gehört.

    $array = array(  
      "a" => "/\\",  
      "b" => "|3",  
      "c" => "(",  
    );
    

    Außerdem kann es dir dann nicht mehr passieren, dass in der einen Struktur 74 in der anderen aber nur 72 Elemente enthalten sind. Und zu guter Letzt kann man dann solch nette Funktionen wie strtr() (nicht zu verwechseln mit strstr()) in der zweiten Notationsweise verwenden.

    echo "$verabschiedung $name";