Ankündigung

Einklappen
Keine Ankündigung bisher.

csv auslesen - datum aufbereiten

Einklappen

Neue Werbung 2019

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

  • #16
    Da liegst du falsch. Wäre schlimm wenn PHP dann etwas aus einen String löscht. Und in seinen Hexdump #11 sehe ich keine solchen Zeichen. Möchte fast wetten, jetzt "funzt" es wie von Zauberhand auch ohne (string).
    PHP-Klassen auf github

    Kommentar


    • #17
      Zitat von jspit Beitrag anzeigen
      Da liegst du falsch. Wäre schlimm wenn PHP dann etwas aus einen String löscht. Und in seinen Hexdump #11 sehe ich keine solchen Zeichen.
      macht er doch beim Integer auch

      $foo ="5 Äpfel";
      echo (int)$foo; //5


      wieso dann auch nicht $bar = "test ..irgendeinSteuerungszeichen"; echo (string)$bar;//alles binäre wird rausgeschnitten
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

      Kommentar


      • #18
        Zitat von BlackScorp Beitrag anzeigen
        Naja ich vermute dass php dann alle komischen UTF8 steuerungszeichen rauslöscht wenn es nach String konvertiert der TE hat doc geschrieben dass es jetzt "funzt"
        Aus Sicht von PHP ist ein String nur ein Byte-Array. Für PHP gibt es keine UTF-8 oder Steuerzeichen. Ein String ist immer binär. Wenn PHP alles "binäre rausschneiden" würde, wäre der String immer leer.

        Kommentar


        • #19
          Zitat von hellbringer Beitrag anzeigen

          Aus Sicht von PHP ist ein String nur ein Byte-Array. Für PHP gibt es keine UTF-8 oder Steuerzeichen. Ein String ist immer binär. Wenn PHP alles "binäre rausschneiden" würde, wäre der String immer leer.
          keine Ahnung, die Lösung hat ja irgendwie geholfen, wir können stunden lang weiter so hin und her diskutieren ohne der tatsächlichen CSV Vom TE werden es eh nicht herausfinden
          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

          Kommentar


          • #20
            Zitat von BlackScorp Beitrag anzeigen
            keine Ahnung, die Lösung hat ja irgendwie geholfen, wir können stunden lang weiter so hin und her diskutieren ohne der tatsächlichen CSV Vom TE werden es eh nicht herausfinden
            Mag schon sein, dass der TE was ganz anderes macht, als er hier zeigt. Aber es sollte halt hier nicht als "Lösung" für so ein Problem für andere, die zufällig drüber stolpern, stehen bleiben. Schon gar keine Annahmen, dass PHP bei einem String-Cast irgendwelche Zeichen entfernt, was ja eindeutig falsch ist. Dass dem TE geholfen wurde mag ja schön und gut sein, aber hier sollten dann bitte keine falschen Fakten stehen bleiben.

            Kommentar


            • #21
              Zitat von hellbringer Beitrag anzeigen

              Mag schon sein, dass der TE was ganz anderes macht, als er hier zeigt. Aber es sollte halt hier nicht als "Lösung" für so ein Problem für andere, die zufällig drüber stolpern, stehen bleiben. Schon gar keine Annahmen, dass PHP bei einem String-Cast irgendwelche Zeichen entfernt, was ja eindeutig falsch ist. Dass dem TE geholfen wurde mag ja schön und gut sein, aber hier sollten dann bitte keine falschen Fakten stehen bleiben.
              Ich habe auch geschrieben "Ich vermute dass" es ist also kein Fakt meinerseits :P aber du hast schon Recht, nicht dass die leute tatsächlich denken dass man mit string cast alles unnötige aus einem string entfernt
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

              Kommentar


              • #22
                Mit Blick auf #9 scheint es hier Probleme mit Whitespace am Zeilenende zu geben. Geht denn trim mit einem UTF-8 newline, carriage return (Was könnte da noch sein?) richtig um?
                Es ist schon alles gesagt. Nur noch nicht von allen.

                Kommentar


                • #23
                  trim() entfernt das:
                  " " (ASCII 32 (0x20)), ein normales Leerzeichen.
                  "\t" (ASCII 9 (0x09)), ein Tabulatorzeichen.
                  "\n" (ASCII 10 (0x0A)), einen Zeilenvorschub (Line Feed).
                  "\r" (ASCII 13 (0x0D)), ein Wagenrücklaufzeichen (Carriage Return).
                  "\0" (ASCII 0 (0x00)), das NUL-Byte.
                  "\x0B" (ASCII 11 (0x0B)), ein vertikaler Tabulator.
                  https://www.php.net/manual/de/function.trim.php

                  Was noch sein könnte, unter anderem:
                  NEL: Next Line, U+0085
                  LS: Line Separator, U+2028
                  PS: Paragraph Separator, U+2029
                  https://en.wikipedia.org/wiki/Newline#Unicode

                  Mal davon abgesehen, dass es unzählige Unicode-Zeichen gibt, die nicht sichtbar sind. Also man müsste schon wissen was drin ist um es zu entfernen und nicht auf gut Glück irgendwelche skurrilen Löschaktionen starten.

                  Kommentar


                  • #24
                    Zitat von hellbringer Beitrag anzeigen
                    Mal davon abgesehen, dass es unzählige Unicode-Zeichen gibt, die nicht sichtbar sind. Also man müsste schon wissen was drin ist um es zu entfernen und nicht auf gut Glück irgendwelche skurrilen Löschaktionen starten.
                    Richtig. Aber was da drin sein soll hat der TE ja #11 gezeigt.
                    Code:
                    4a616e20313020323031392031323a353720
                    Das mit hex2bin() in ein string gewandelt ergibt (mit einer Methode ausgegeben die auch Unicode-Zeichen darstellt die sonst nicht sichbar sind)
                    string( 18 ) ASCII "Jan 10 2019 12:57 "
                    Und das kann dann anstandslos von strtotime() geparst werde und passt so gar nicht zu einigen Aussagen des TE.

                    Zitat von hellbringer Beitrag anzeigen
                    Mag schon sein, dass der TE was ganz anderes macht, als er hier zeigt....
                    Das ist auch meine Vermutung. Und wenn ich so etwas feststelle, bin ich dann raus.

                    PHP-Klassen auf github

                    Kommentar


                    • #25
                      Zitat von jspit Beitrag anzeigen

                      Das ist auch meine Vermutung. Und wenn ich so etwas feststelle, bin ich dann raus.
                      Ähm, das verstehe ich jetzt nicht. Ich hatte immer den Code inkl. der Ausgabe gepostet. Was soll es mir bringen, wenn ich Teile weglasse?

                      Kommentar


                      • #26
                        Hab ich leider öfters erlebt das Teile weggelassen wurden in der Meinung es spielt keine Rolle, Code falsch abgeschrieben wurde so das dann Fehler produziert wurden oder auch Ergebnisse publiziert wurden welche nicht zum Code passen.
                        Sorry, wenn ich das hier zu unrecht vermutet habe.
                        Warum komme ich zu so einer Vermutung?
                        Das habe ich im Grundsatz schon im Beitrag #24 gezeigt. Dazu noch ein weiteres Beispiel:

                        PHP-Code:
                        <?php
                        $column
                        [10] = "Jan 10 2019 12:57 ";
                        $input $column[10]; 
                        echo 
                        bin2hex($input)."\n";
                        echo(
                        "<br>variablentyp input: " gettype($input) . " inhalt: **" $input "**<br><br>");
                        $date strtotime($input); 
                        echo(
                        "variablentyp date: " gettype($date) . " inhalt: **" $date "**<br><br>");
                        echo (
                        "Datum: " $date "<br>"); 
                        echo 
                        date('d m Y H:i:s'$date);
                        Ist der Code aus #1, nur das ich $column[10] gesetzt und eine Hexausgabe des $input zugefügt habe. Zum selber probieren hier.
                        Der hexcode welcher ausgegeben wird ist identisch mit einer Ausgabe welche du #11 zeigst. Im dortigen Code ist aber noch ein logischer Fehler, so dass niemals ein richtiges Datum rauskommen kann.

                        Eine hypothetische Variante für das merkwürdige Verhalten wäre noch das Du mit unterschiedlichen CSV-Files arbeitest von denen einige ok sind und andere noch unbekannte Zeichen enthalten.



                        PHP-Klassen auf github

                        Kommentar


                        • #27
                          Kein Thema. Das glaub ich Dir.

                          Ich hab auch die Vermutung, dass es an der CSV liegt - wobei es immer die selbe ist Datei ist.

                          Die CVS beinhaltet zwei Datumsangaben die identisch aufgebaut sind. Bei einer funktioniert es und bei der anderen nicht... und das mit dem selben Code...

                          Ich versuch mich weiter an dem Code.

                          Kommentar


                          • #28
                            Es wird an der CVS liegen.

                            Dort ist z.B. "51GHG6813;Task ;Jan 07 2020 09:29 ;AXDD41, " angegeben.

                            Wenn ich nun versuchen in der Datei " ;" durch ";" per "Suchen und ersetzen" zu ersetzen, wird " ;" nicht bei der Datumsangabe gefunden.

                            Nehme ich das Leerzeichen vor dem Semikolon per Hand raus, funktioniert es wieder.

                            Kommentar


                            • #29
                              Dann wird es wohl kein Leerzeichen sondern ein anderes Zeichen sein.

                              Kommentar


                              • #30
                                Ja, da bin ich gerade dran.

                                Kommentar

                                Lädt...
                                X