ö aus Formular in RTF-Syntax umwandeln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ö aus Formular in RTF-Syntax umwandeln

    Hallo allerseits!

    Ich habe ein (X)HTML-Formular. Aus den Daten die da eingetragen werden wird später eine RTF-Datei erzeugt. Das funktioniert soweit auch ganz gut. Aber wenn äöüß eingegeben werden kommt in der *.rtf-Datei nur Quatsch an. Deshalb muss ich die äöüß irgendwie in die entsprechende RTF-Syntax umwandeln. Ich habe aber das Problem, dass ich die äöüß garnicht mit ner if-Abfrage doerso abfragen kann. Ich wollte es so machen:
    PHP-Code:
    $umlaut_konv = array(
           
    "&ouml" => "\\'9a",
           
    "ö" => "\\'9a"
        
    );
        
    $complete_rtf strtr($complete_rtf$umlaut_konv); 
    Das funktioniert aber beides nicht. Das ö müsste doch entweder als ö oder als ö codiert sein. Wieso geht das so nicht? Gibt es eine Lösung?

    Viele Grüße, Juuro
    www.sebastian-engel.de

  • #2
    Schon mal gedebugt und geschaut was dort wirklich drinn steht?
    Das funktioniert aber beides nicht.
    ist keine Fehlerbeschreibung. Wird es nicht ersetzt? Wird es im RTF nicht richtig angezeigt?
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      PHP-Code:
      $complete_rtf strtr($complete_rtf$umlaut_konv); 
      erfüllt das auch einen Sinn? Ich sehe keinen. str_replace() ist Dein Freund.
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        Ich finde strtr, in manchen Situationen, auch besser und schöner als str_replace..
        Ich bin sogar schon fast ein strtr Fan!!!

        Aber zum Thema:

        1. Website Zeichensatz
        2. formular Zeichensatz
        Gleichstellen!!!!

        Von RTF, habe ich KA!
        Aber evtl gibts da auch eine Zeichensatzeinstellung.
        Also auch so einstellen, oder dahin Konvertieren!

        Dabei ist iconv() evtl sehr hilfreich...

        Das Zufuß-Konvertieren ist immer arg umständlich und Fehlerträchtig...

        Dein Hauptproblem, dürfte sein, daß dein Website-Zeichensatz nicht derselbe ist , wie von deinem PHP Quelltexteditor!!!
        Zuletzt geändert von combie; 15.04.2007, 12:00.
        Wir werden alle sterben

        Kommentar


        • #5
          Original geschrieben von combie

          1. Website Zeichensatz
          2. formular Zeichensatz
          Gleichstellen!!!!

          Von RTF, habe ich KA!
          Aber evtl gibts da auch eine Zeichensatzeinstellung.
          Also auch so einstellen, oder dahin Konvertieren!

          Dabei ist iconv() evtl sehr hilfreich...

          Das Zufuß-Konvertieren ist immer arg umständlich und Fehlerträchtig...

          Dein Hauptproblem, dürfte sein, daß dein Website-Zeichensatz nicht derselbe ist , wie von deinem PHP Quelltexteditor!!!
          Daran lags dann auch! Wir habens aber dann doch noch gelöst bekommen!
          www.sebastian-engel.de

          Kommentar


          • #6
            strtr ersetzt nur bestimmte Zeichen durch bestimmte andere Zeichen. In diesem Fall soll aber ein Zeichen, durch mehrere andere ersetzt werden, bzw. selbst das ö wäre mit utf8 schon mehrere "Zeichen" und ich denke strtr würde daran verrecken ... aber das nur btw.
            (Das Ersetzungs-Array war schon falsch~)

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              und ich denke strtr würde daran verrecken
              Vor PHP6 gehen die strXXXX binär vor...(meine ich zu wissen)
              Denen sind Zeichensätze völlig wurscht, geht also auch mit utf-8. Man muß nur "aufpassen", wenn die Quelle in utf-8 ist, dann kann es passieren, daß sie mitten im Zeichen ansetzen. Da kann dann nur Müll entstehen.

              Aber dafür haben wir ja die mb_XXXXX Funktionen.....
              Wir werden alle sterben

              Kommentar


              • #8
                Original geschrieben von combie
                Vor PHP6 gehen die strXXXX binär vor...(meine ich zu wissen)
                Denen sind Zeichensätze völlig wurscht, geht also auch mit utf-8. Man muß nur "aufpassen", wenn die Quelle in utf-8 ist, dann kann es passieren, daß sie mitten im Zeichen ansetzen. Da kann dann nur Müll entstehen.
                Gerade das ist ja hier das Problem. Wenn ein ä aus mehreren "Zeichen" besteht, strtr aber jeweils Zeichen ersetzt, verreckt alles ... tut es jbtw. auch, ich hab es gerade mal ausprobiert.
                Für utf8 ist die Funktion nichts und ein Äquivalent zu strtr gibt es bei den MB-Funktionen nicht~

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Ich bin mit allem einverstanden!
                  Nur mit diesem nicht:
                  Gerade das ist ja hier das Problem.
                  Hier war das Problem:
                  1. Website
                  2. PHP Quelltext
                  3. RTF Dokument

                  Und diese Dokumente waren nicht im gleichen Zeichensatz...
                  utf-8 haben erst wir beide ins Spiel gebracht...

                  Und ich stehe weiterhin zu meiner Behauptung:
                  Dabei ist iconv() evtl sehr hilfreich...
                  Das Zufuß-Konvertieren ist immer arg umständlich und Fehlerträchtig...
                  PS:
                  Wenn die strtr Quelle in utf-8 ist und der PHPQuellcode auch in utf-8 erfasst wurde, dann sollte auch ein "ö" im Suchstring keine Sorgen bereiten..
                  *ungetestet, werde ich aber bezeiten mal machen*

                  Zuletzt geändert von combie; 16.04.2007, 13:00.
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Original geschrieben von combie
                    Wenn die strtr Quelle in utf-8 ist und der PHPQuellcode auch in utf-8 erfasst wurde, dann sollte auch ein "ö" im Suchstring keine Sorgen bereiten..
                    *ungetestet, werde ich aber bezeiten mal machen*
                    nein, eben das habe ich ja gerade getestet, weil ich es mir schon dachte
                    strtr("mäh", "ä", "a");
                    Da ist beim zweiten String nicht ein Zeichen ä drin, sondern ein mb-Zeichen ä, also zwei "Zeichen" ä, damit wiederum wird der zweite String um ein Zeichen gekürzt, weil beim dritten String nur ein Zeichen drin ist (das a), das ganze dann auf den ersten String angewendet bringt ein ma<insert kaputten hinteren Teil vom mb-Ä>h


                    und mit "Gerade das ist ja hier das Problem" meinte ich eben gerade die Tatsache, dass die str-Funktionen binär arbeiten und nicht nach charactern

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      strtr("mäh", "ä", "a"); <<-- falsche Variante
                      Diese Variante wurde von Threadersteler NICHT benutzt!
                      Und funktioniert auch nicht!

                      Jetzt habe ich auch meine Tests gemacht und siehe da:
                      Dieses Test-Progrämmchen funktioniert!
                      (zumindest bei mir)
                      PHP-Code:
                      <?php
                      error_reporting
                      (E_ALL);
                      $ergebnis '';
                      $string   '';
                      if(isset(
                      $_POST['string']))
                      {
                        
                      $string   $_POST['string'];
                        
                      $tauscher = array($_POST['such'] => $_POST['ersetz']);
                        
                      $ergebnis strtr($string,$tauscher);
                      }
                      ?>
                      <html>
                        <head>
                          <meta http-equiv="content-type" content="text/html; charset=utf-8">
                        </head>
                        <body>
                          <form accept-charset="utf-8" name="testform" method="post">
                            <input type="text" name="string"> Eingabe <br>
                            <input type="text" name="such"> Suchstring <br>
                            <input type="text" name="ersetz"> Austausch <br>
                            <input type="submit" name="submit" value="submit">
                          </form>
                          Ergebnis: <?php echo $ergebnis ?> <br>
                          Anzahl Bytes vor  der Wandlung: <?php echo strlen($string)   ?> <br>
                          Anzahl Bytes nach der Wandlung: <?php echo strlen($ergebnis?> <br>
                        </body>
                      </html>
                      Eingabe: mäh
                      Suchstring: ä
                      Austausch: a
                      Ergebnis: mah (ohne Müllzeichen)

                      Resultat: Wir haben beide halb recht!
                      Zuletzt geändert von combie; 17.04.2007, 01:10.
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        Original geschrieben von combie
                        Eingabe: mäh
                        Suchstring: ä
                        Damit hast du beide Daten, Needle und Haystack, in der selben Kodierung vorliegen - also ein Testfall, der in Bezug auf das vorliegende Problem keine wirkliche Aussagekraft hat.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Aussagekraft:
                          Ein 4 Byte String, wird durch Austausch zu einem 3 Byte String!

                          Natürlich müssen die verwendeten Zeichensätze fixiert werden. Sonst ist doch jede Art von Austausch ein stochern im Nebel!!

                          In dem Array kannst du natürlich beliebige Zeichen, Bytes oder Byteketten unterbringen...

                          ghostgambler verwendet auch nur einen Zeichensatz!
                          Was für eine seltsame Kritik von dir.....


                          PS:
                          Strtr gibts in 2 variationen
                          string strtr ( string $str, string $from, string $to ) <<-- tuts nicht mit mb Strings
                          string strtr ( string $str, array $replace_pairs ) <<-- tuts besser mit mb Strings

                          Es besteht weiterhin die Gefahr des "mitten im Buchstaben" aufsetzens!
                          Also sind die mb_XXX Funktionen die bessere Wahl.
                          Auch wenn man sich sein mb_strtr selber basteln muß.
                          Zuletzt geändert von combie; 17.04.2007, 00:53.
                          Wir werden alle sterben

                          Kommentar

                          Lädt...
                          X