phil: sätze auslesen und umwandeln

Hello out there!

Ich möchte gerne folgendes erreichen!
Ich gebe in eine textarea einen satz ein...
dann möchte ich das die einzelnen buchstaben umgewandelt werden

z.B.

ich gebe ein:

"abc"
ohne ""
das a soll in t,
das b soll in f,
das c soll in u,

umgewandelt werden!
dann soll der satz in einem anderen
textarea-feld ausgegeben werden!

Wie gehts sowas?

Danke im Vorraus

mfg

Phil

  1. gudn tach!

    Ich gebe in eine textarea einen satz ein...
    dann möchte ich das die einzelnen buchstaben umgewandelt werden
    [...]
    das a soll in t,
    das b soll in f,
    das c soll in u,
    umgewandelt werden!

    sollen dieselben buchstaben immer durch dieselben neuen buchstaben ersetzt werden?

    strtr macht sowas komfortabel:
    strtr($str, 'abc', 'tfu');

    dann soll der satz in einem anderen
    textarea-feld ausgegeben werden!

    Wie gehts sowas?

    wie du formulare auswertest weisst du bereits?

    prost
    seth

    1. strtr macht sowas komfortabel:
      strtr($str, 'abc', 'tfu');

      das a soll immer in t,
      das b soll immer in f,
      das c soll immer in u,
      umgewandelt werden
      gehtz das nicht einfach er? als das ich dafür 3 variablen brauche ? weil nacher soll das komplett a-z gemacht werden !!

      1. Hallo phil.

        strtr macht sowas komfortabel:
        strtr($str, 'abc', 'tfu');

        das a soll immer in t,
        das b soll immer in f,
        das c soll immer in u,
        umgewandelt werden
        gehtz das nicht einfach er? als das ich dafür 3 variablen brauche ?

        Ich sehe in seths Beispiel nur eine einzige Variable, $str.

        weil nacher soll das komplett a-z gemacht werden !!

        Dann erläutere genauer, was nun unter welchen Bedingungen genau passieren soll und verzichte auf Plenks.

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
        1. der besucher gibt eine text ein :

          "Hallo Welt!"

          ohne ""!!
          Dann wird aus jedem

          h ein l
          a ein w
          l ein x
          o ein Y
          w eine 3
          e eine 8
          t ein $

          dann wird da ganze in einem andern feld ausgegeben!
          also jeder buchstabe wir deinzelnd umgewandelt!

          1. Hallo,

            //meinetwegen ist $eingabe deine Eingabe und dann:

            $eingabe = str_replace("h", "l", $eingabe);
            $eingabe = str_replace("a", "w", $eingabe);
            //... und immer so weiter
            //und nun die textarea:
            echo '<textarea cols="XY" rows="XY">'.$eingabe.'</textarea>'

            fertig!

            Grüße - der Binni

            Viele Grüße - der Binni

            --
            www.GTR-Home.de
            1. $eingabe = str_replace("h", "l", $eingabe);
              $eingabe = str_replace("a", "w", $eingabe);

              dann hab ich folgendes problem!

              wenn zum beispiel aus
              a -> l werden soll
              und aus
              l -> o werden soll
              und ich dann "al" eingebe ohne "" dann gibt er 2 mal "o" aus ohne "" ...
              er soll aber dann "lo" ausgeben.. ohne ""

              $text = str_replace("a", "l", $text);
              $text = str_replace("l", "o", $text);
              echo "<div class='txt2'>$text</div>";

              hierbei !! wie kann ich das umgehn ... es kann auch sein das in einem text 2 mal a vorkommt oder so ...

              1. Hallo,

                dann hab ich folgendes problem!

                wenn zum beispiel aus
                a -> l werden soll
                und aus
                l -> o werden soll
                und ich dann "al" eingebe ohne "" dann gibt er 2 mal "o" aus ohne "" ...
                er soll aber dann "lo" ausgeben.. ohne ""

                dann tutst du das a erst in eine andere bestimmte zeichenkette umwandeln und diese dann nach der umwandlung des L ind das l umwandeln ...

                Viele Grüße - der Binni

                --
                www.GTR-Home.de
                1. gudn tach Binni!

                  dann tutst du das a erst in eine andere bestimmte zeichenkette umwandeln und diese dann nach der umwandlung des L ind das l umwandeln ...

                  dann tutst du mal weggehen und spielen oder mehr hirn ins beantworten-machen der P einsetzen tun.

                  prost
                  seth

            2. echo $begrüßung;

              $eingabe = str_replace("h", "l", $eingabe);
              $eingabe = str_replace("a", "w", $eingabe);
              //... und immer so weiter

              Und wenn als dritter Buchstabe dann das l durch ein x ersetzt werden soll, wird aus dem ursprünglichen h auch ein x ...
              Was ist denn an der schon genannten strtr()-Lösung (Kurzbeschreibung: Translate certain characters - Tauscht bestimmte Zeichen aus) auszusetzen?

              echo "$verabschiedung $name";

              1. das gleiche passiert bei der
                strtr()-Lösung genauso!

                1. echo $begrüßung;

                  das gleiche passiert bei der
                  strtr()-Lösung genauso!

                  Das kann ich nicht nachvollziehen, wenn ich strtr() richtig anwende:

                  $string = 'hallo welt';  
                  echo strtr($string, 'halowet', 'lwxY38$');
                  

                  ergibt: lwxxY 38x$

                  echo "$verabschiedung $name";

          2. Hallo Phil.

            Dann wird aus jedem

            h ein l
            a ein w
            l ein x
            o ein Y
            w eine 3
            e eine 8
            t ein $

            Und welcher Logik folgt dies?
            Also welcher Algorithmus besagt, dass aus einem „h“ zwangsläufig ein „l“, aus jedem „a“ ein „w“ usw. wird?

            Einen schönen Montag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
            [HTML Design Constraints: Logical Markup]
  2. Hallihallo!

    Ich nehme mal an, daß Du einfach nur jeden Buchstaben in Deinem Text durch einen anderen Buchstaben ersetzen willst.
    Also aus _jedem_ "a" ein "t", aus _jedem_ "b" ein "f", aus _jedem_ "c" ein "u", usw.

    Dafür bietet sich die Funktion str_replace an, die als Parameter auch Arrays annimmt.

    Ich hoffe, das hilft Dir weiter...

    Viele liebe Grüße,
    Der Dicki

    1. Hallihallo!

      Nachdem ich die eigentliche Problematik endlich mal kapiert habe (es darf nicht "doppelt" ersetzt werden), muss ich natürlich einen Rückruf starten.

      Ein einfaches str_replace mit Arrays als Argumenten hilft hier nicht weiter, wie ich feststellen musste.

      Um das Problem zu lösen, muß man also nur dafür sorgen, daß jedes Zeichen im gegebenen String nur höchstens ein Mal ersetzt wird.

      Das kann man am Besten in einer einfachen Schleife realisieren:

        
       $string = "franz faehrt im komplett verwahrlosten taxi quer durch bayern";  
       $translation = array(  
        "a" => "b",  
        "b" => "c",  
        "c" => "d",  
        "d" => "e",  
        "e" => "f",  
        "f" => "g",  
        "g" => "h",  
        "h" => "i",  
        "i" => "j",  
        "j" => "k",  
        "t" => "u",  
        "u" => "v",  
        "v" => "w",  
        "w" => "x",  
        "x" => "y",  
        "y" => "z",  
        "z" => "a",  
        " " => " "  
        );  
        
       echo $string."<br>";  
       for ($i=0; $i<strlen($string); $i++) {  
        if ([link:http://de2.php.net/manual/de/function.array-key-exists.php@title=array_key_exists]([link:http://de2.php.net/manual/de/function.substr.php@title=$string{$i}],$translation)) {  
         $string{$i} = $translation[$string{$i}];  
        }  
       }  
       echo $string;  
      
      

      Hier wird einfach am Anfang eine Ersetzungstabelle erstellt, und die Schleife läuft den String einmal von Anfang bis Ende durch.
      Findet sie ein Zeichen, das übersetzt werden soll, tut sie das.

      Ich hoffe, ich konnte Dir damit helfen...

      Viele liebe Grüße,
      Der Dicki

      1. gudn tach!

        Nachdem ich die eigentliche Problematik endlich mal kapiert habe [...]

        ... hast du nun eine loesung praesentiert, die komplizierter, weniger huebsch und vermutlich viel langsamer ist als die bereits an mehreren stellen im thread propagierte funktion strtr.

        warum?

        prost
        seth

        1. Hallihallo!

          Du hast recht, Asche auf mein Haupt...

          warum?

          Weil ich in meiner Unwissenheit strtr mit strstr verwechselt habe, und demzufolge immer wieder an einer völlig falschen Stelle des PHP- Handbuchs gelandet bin.
          Daß diese Dinger auch teilweise so _extrem_ ähnlich aussehen müssen *grmblfrx*...

          Viele liebe Grüße,
          Der Dicki