Sonderzeichen entfernen

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

  • #16
    Bei Wikipedia habe ich gefunden, dass LF (Line Feed) bzw CR (Carriage Return) in den meisten Systemen hexadezimal 0A bzw. 0D codiert sind. Habe deshalb versucht mit str_replace diese Zeichen aus dem Feld zu entfernen.

    PHP-Code:
    $email str_replace("0x0A"""$email);
    $email str_replace("0x0D"""$email); 
    Das hat so auch nicht funktioniert. Gebe ich den Hexcode so richtig ein?

    Es ist denkbar, dass das Problem Einträge in Outlook betrifft, die ich über ein Symbian Handy reinsynchronisiert habe. Man müßte also wissen, wie Symbian einen LF codiert. Das steht in Wikipedia nicht.

    Kommentar


    • #17
      Es ist denkbar, dass das Problem Einträge in Outlook betrifft, die ich über ein Symbian Handy reinsynchronisiert habe. Man müßte also wissen, wie Symbian einen LF codiert. Das steht in Wikipedia nicht.
      Schon mal versucht es herauszufinden? Die Daten stehen doch in deiner Datenbank oder?
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #18
        wenn du nicht rauskriegst wie LF bzw. CR codiert sind,
        dann kannst Dir so behelfen:

        PHP-Code:
        // Zeilenumbrüche in <br> umwandeln
        $text nl2br($mail);

        // prüfen wie sie umgewandelt wurden,
        // ob <br> erzeugt wurden und
        // nicht etwa <br />
        echo $text;

        // und dann löschen:
        $text str_replace("<br>"""$text); 

        Kommentar


        • #19
          nein, wenn du es als hexadezimal angeben willst, dann ohne anführungsstriche (auch das steht im manual unter "numeric types"). aber bei wikipedia stehen vor allem noch die escape sequenzen, die man üblicherweise verwendet.

          Kommentar


          • #20
            Original geschrieben von penizillin
            ja, ich wollte dich darauf hinweisen, dass für einfache stringmanipulationen auch einfache (und somit schnellere) funktionen gibt, schau im manual nach string functions.
            Kurz nebenbei: Diese Laufzeiten sind so marginal, das ist in etwa so wie "soll ich jetzt bei Strings Single- oder Doublequotes benutzen?". Eigentlich tun sich die beiden nichts. Im vergleich zu str_replace ist preg_replace ca. 3-4 Mikrosekunden (= 10^-6) langsamer. Das ist - gelinde gesagt - nichts.

            Bei 3400 Wiederholungen sind wir dann bei ca. 13 Millisekunden Unterschied - wer soviele Ersetzungen hat, sollte sich mal Gedanken machen

            Mehr zum Thema: http://benchmark.nophia.de/benchmark...tzen-b-12.html (ganz unten Benchmarks gucken)


            (Was aber nichts daran ändert, dass man als Programmierer generell Resourcenschonend arbeiten sollte! War nur ein kleiner Hinweis auf die Marginalität der Laufzeitunterschiede )
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #21
              Nach allen Hilfestellungen, Kommentaren und eigenen Recherchen habe ich nun folgende Funktion genutzt (erweitertes Beispiel aus php.net), die das Problem löst:

              PHP-Code:
              function nl2brdelete($string) {
              $string str_replace(array("\r\n""\r""\n"), "<br>"$string);
              $string str_replace("<br>"" "$string);
              return 
              $string;

              Die Funktion löst das Problem der Betriebssystemabhängigkeit bei Zeilenumbrüchen.

              Wenn ich die Umbrüche erhalten will nutze ich das:


              PHP-Code:
              function nl2br2($string) {
              $string str_replace(array("\r\n""\r""\n"), "<br>"$string);
              return 
              $string;

              Herzlichen Dank für die Tips

              Kommentar


              • #22
                Original geschrieben von Shurakai Im vergleich zu str_replace ist preg_replace ca. 3-4 Mikrosekunden (= 10^-6) langsamer. Das ist - gelinde gesagt - nichts.
                Immerhin 131,52% ... Grundsätzlich denke ich man sollte preg_replace nur einsetzen wenn es nicht anders möglich ist.
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #23
                  Dass Prozentzahlen nicht wirklich was über den Zusammenhang zweier Dinge aussagen, sollte mittlerweile doch bekannt sein, oder?

                  Große Prozentzahlen sind beeindruckend und werden fast immer genau dafür benutzt.

                  Stell dir mal vor, du hast eine SQL-Query, die
                  0,0000001s braucht. Die Query anders geschrieben braucht aber nur
                  0,000001s

                  Das ist zeittechnisch gesehen ein Witz, in Prozenten aber eine große Zahl. Danach kräht kein Hahn. Eine Veränderung von 1,0s <-> 10,0s ist in Prozenten gleich, aber etwas völlig anderes.

                  Wirklich interessant wird das Optimieren also erst bei größeren Zeitverlusten.

                  Das Argument, dass "preg_replace" für soetwas ist wie eine Kanone um auf Spatzen zu schießen, lasse ich sofort gelten - das Zeitargument allerdings nicht.
                  Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                  var_dump(), print_r(), debug_backtrace und echo.
                  Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                  Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                  Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                  Kommentar


                  • #24
                    PHP-Code:
                    function nl2brdelete($string) {
                    $string str_replace(array("\r\n""\r""\n"), "<br>"$string);
                    $string str_replace("<br>"" "$string);
                    return 
                    $string;

                    Warum zuerst Umbruch zu <br> und dann <br> zu Leerzeichen? Warum nicht einfach Umbruch zu nichts?

                    PHP-Code:
                    function nl2br2($string) {
                    $string str_replace(array("\r\n""\r""\n"), "<br>"$string);
                    return 
                    $string;

                    Du weißt schon, dass es dafür eine fertige nl2br-Funktion gibt?!...

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

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

                    Kommentar

                    Lädt...
                    X