Umlaute eines Textes umwandeln

  • geschlossen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Umlaute eines Textes umwandeln

    Hi Leute

    Ich wollte erreichen das die Umlaute eines eingegebenes Textes umgewandelt werden (ä->ae, ö->oe,...). Doch leider funktioniert es nicht.

    Kann mir vl. einer sagen woran das liegt ?

    Hier sind die zwei Dateien:

    Absenden.html :

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <title>Umlaute ersetzen</title>
    4. </head>
    5. <body>
    6. <form action="Ersetzen.php" method="get">
    7. <table border="0" cellpadding="5" cellspacing="0">
    8. <tr>
    9. <td>Text eingeben:</td>
    10. <td>
    11. <input id="eingabe" name="eingabe" type="text" size="30" maxlength="30">
    12. </td>
    13. </tr>
    14. <tr>
    15. <td>
    16. <input type="submit" value=" Absenden ">
    17. <input type="reset" value=" Abbrechen">
    18. </td>
    19. </tr>
    20. </table>
    21. </form>
    22. </body>
    23. </html>
    Alles anzeigen


    Ersetzen.php :

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    4. <title> Text ohne Umlaute</title>
    5. </head>
    6. <table width="250" border="0">
    7. <tr>
    8. <td class="label">Text:</td>
    9. <td>&nbsp;</td>
    10. <td>
    11. <?php
    12. $string = &_GET['eingabe'];
    13. str_replace("ö","oe",$string)
    14. str_replace("ä","ae",$string)
    15. str_replace("ü","ue",$string)
    16. str_replace("Ö","Oe",$string)
    17. str_replace("Ä","Ae",$string)
    18. echo $string;
    19. ?>
    20. </td>
    21. </tr>
    22. </table>
    23. </body>
    24. </html>
    Alles anzeigen

    [FONT="Century Gothic"]"...erst wollte ich was über deine dürren Ärmchen sagen, doch dann fiel mir deine hässliche Fresse auf..." (Gothic 1 ist Kult)[/FONT]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 360Boarder ()

  • probiere es doch mal so:

    PHP-Quellcode

    1. $umlaute = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
    2. $gewandelt = array("ae", "oe", "ue", "Ae", "Oe", "Ue", "ss");
    3. echo str_replace($umlaute, $gewandelt, $_GET['eingabe']);
  • Habs ausprobiert und es funktioniert einwandfrei.

    Vielen Dank, für die schnelle Hilfe.

    Ich hab da noch ne Frage, wie kann ich das ganze in eine einzige Datei schreiben? Damit ich das mit dem übergeben (GET...) und so weglassen kann. Muss das eine php oder html Datei sein?

    [FONT="Century Gothic"]"...erst wollte ich was über deine dürren Ärmchen sagen, doch dann fiel mir deine hässliche Fresse auf..." (Gothic 1 ist Kult)[/FONT]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 360Boarder ()

  • Also man kann, sofern es der Server zulässt, in einer .htaccess Datei bestimmte Directiven anwenden, dass in einer *.htm / *.html Datei auch PHP Code ausgeführt werden kann. Ist aber weniger elegant, da eine *.PHP datei immer auch HTML Code enthalten kann.
    Ergo würde ich es so machen:

    Die "absenden.html" in "absenden.php" umbennnen.
    Dann das Formfeld über eine IF-Abfrage nur ausführen, wenn noch kein Eingabewert vorhanden ist. Im formfeld selber schreibst du dann als action Adresse die "absenden.php" rein.

    entsprechend so:

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <title>Umlaute ersetzen</title>
    4. </head>
    5. <body>
    6. <?php
    7. if (!isset($eingabe))
    8. {
    9. // noch keine eingabe --> Formular ausführen
    10. ?>
    11. <form action="absenden.php" method="get">
    12. <table border="0" cellpadding="5" cellspacing="0">
    13. <tr>
    14. <td>Text eingeben:</td>
    15. <td>
    16. <input id="eingabe" name="eingabe" type="text" size="30" maxlength="30">
    17. </td>
    18. </tr>
    19. <tr>
    20. <td>
    21. <input type="submit" value=" Absenden ">
    22. <input type="reset" value=" Abbrechen">
    23. </td>
    24. </tr>
    25. </table>
    26. </form>
    27. <?php
    28. }
    29. else
    30. {
    31. // Formulardaten vorhanden, auswerten:
    32. $umlaute = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
    33. $gewandelt = array("ae", "oe", "ue", "Ae", "Oe", "Ue", "ss");
    34. echo str_replace($umlaute, $gewandelt, $_GET['eingabe']);
    35. }
    36. ?>
    37. </body>
    38. </html>
    Alles anzeigen



    Ich habs nicht getestet, aber sollte so funktionieren
  • Mit der if-else Abfrage funktionierts nicht aber ohne gehts einwandfrei. Aber das ist genau das was ich wollte.

    Vielen Dank für deine Hilfe.

    [FONT="Century Gothic"]"...erst wollte ich was über deine dürren Ärmchen sagen, doch dann fiel mir deine hässliche Fresse auf..." (Gothic 1 ist Kult)[/FONT]
  • Um mal ein paar Fehlern die Ursache zu benennen:

    360Boarder schrieb:


    PHP-Quellcode

    1. $string = &_GET['eingabe'];
    2. str_replace("ö","oe",$string)
    3. str_replace("ä","ae",$string)
    4. str_replace("ü","ue",$string)
    5. str_replace("Ö","Oe",$string)
    6. str_replace("Ä","Ae",$string)
    7. echo $string;

    Hier wird einfach ins Leere das Ersetze gegeben, hättest du $string = str_replace() benutzt, brächte deine Variante auch das gewünschte Ergebnis.

    berla schrieb:


    PHP-Quellcode

    1. <?php
    2. if (!isset($eingabe))
    3. {...


    Das kann nur funktionieren, wenn register_globals auf on steht und das ist seit php4.2 nicht mehr der Standardwert (Sicherheitsgründe), ergo nur auf wenigen Servern zu finden. Müsste richtig if(isset($_POST['eingabe'])) heißen

    => Closed

    Gruß
    Broken Sword