Oliver: str_getcsv comma oder semikolon?

Hi,

http://de.php.net/manual/de/function.str-getcsv.php
Bestimmt das Feldtrennzeichen (nur ein Zeichen). Standardmäßig wird ein Semikolon verwendet.

http://php.net/manual/en/function.str-getcsv.php
Set the field delimiter (one character only). Defaults as a comma.

Was ist denn nun  Default-Delimiter? Komma oder Semikolon?

Oli

  1. Hallo Oli.

    Im Zweifel würde ich
      1. eher der englischen Doku vertrauen und
      2. es einfach ausprobieren.

    Servus,
    Flo

  2. Hallo

    http://de.php.net/manual/de/function.str-getcsv.php
    Bestimmt das Feldtrennzeichen (nur ein Zeichen). Standardmäßig wird ein Semikolon verwendet.

    http://php.net/manual/en/function.str-getcsv.php
    Set the field delimiter (one character only). Defaults as a comma.

    Gehe davon aus, dass die englischsprachige Version im Normalfall recht hat. Du könntest das aber auch einfach testen bzw. den Trenner explizit angeben, womit du nicht auf das Standardverhalten angewiesen bist. Davon abgesehen ist diese Funktion *nicht* im Standardlieferumfang von PHP enthalten ("No version information available, might be only in CVS"). Es kann also sein, dass sie dir in deiner PHP-Installation garnicht zur Verfügung steht.

    Tschö, Auge

    --
    Die deutschen Interessen werden am Liechtenstein verteidigt.
    Veranstaltungsdatenbank Vdb 0.2
    1. Hi,

      Gehe davon aus, dass die englischsprachige Version im Normalfall recht hat.

      Ja es scheint so zu sein nach einem Test.

      Davon abgesehen ist diese Funktion *nicht* im Standardlieferumfang von PHP enthalten ("No version information available, might be only in CVS"). Es kann also sein, dass sie dir in deiner PHP-Installation garnicht zur Verfügung steht.

      Ja damit hatte ich schon mal Ängste die du und Vincent aber eigentlich zerstreut hatten:
      http://forum.de.selfhtml.org/archiv/2008/4/t170299/#m1113070

      Oli

      1. Hallo Oliver,

        Gehe davon aus, dass die englischsprachige Version im Normalfall recht hat.

        Davon abgesehen ist diese Funktion *nicht* im Standardlieferumfang von PHP enthalten ("No version information available, might be only in CVS"). Es kann also sein, dass sie dir in deiner PHP-Installation garnicht zur Verfügung steht.

        stimmt ausnahmsweise. Soweit ich das sehe, ist str_getcsv() neu in PHP 5.3
        Im Quellcode von PHP 5.2.8 ist sie noch nicht zu finden, im aktuellen Snapshot von PHP 5.3 dagegen schon.

        Der Quellcode bestätigt die englische Doku:

          
        /* {{{ proto array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])  
        Parse a CSV string into an array */  
          
        [code lang=c]  
        PHP_FUNCTION(str_getcsv)  
        {  
         char *str, delim = ',', enc = '"', esc = '\\';  
         char *delim_str = NULL, *enc_str = NULL, *esc_str = NULL;  
         int str_len = 0, delim_len = 0, enc_len = 0, esc_len = 0;  
          
         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sss", &str, &str_len, &delim_str, &delim_len,  
          &enc_str, &enc_len, &esc_str, &esc_len) == FAILURE) {  
          return;  
         }  
          
         delim = delim_len ? delim_str[0] : delim;  
         enc = enc_len ? enc_str[0] : enc;  
         esc = esc_len ? esc_str[0] : esc;  
          
         php_fgetcsv(NULL, delim, enc, esc, str_len, str, return_value TSRMLS_CC);  
        }  
        
        

        Ja damit hatte ich schon mal Ängste die du und Vincent aber eigentlich zerstreut hatten:
        http://forum.de.selfhtml.org/archiv/2008/4/t170299/#m1113070

        Als ich Auges Beitrag las, dachte ich mir: "Es wird doch nicht etwa ..." :-)
        Als ich Deinen las, merkte ich "... doch!"

        Freundliche Grüße

        Vinzenz

        1. Hallo

          Ja damit hatte ich schon mal Ängste die du und Vincent aber eigentlich zerstreut hatten:
          http://forum.de.selfhtml.org/archiv/2008/4/t170299/#m1113070

          Als ich Auges Beitrag las, dachte ich mir: "Es wird doch nicht etwa ..." :-)
          Als ich Deinen las, merkte ich "... doch!"

          Ja, als ich seinem Link folgte, musste ich auch schmunzeln. Wenn wir hier nicht sowieso an _einem_ "Ort" wären, böte sich "Die Welt ist ein Dorf." an. :-)

          Tschö, Auge

          --
          Die deutschen Interessen werden am Liechtenstein verteidigt.
          Veranstaltungsdatenbank Vdb 0.2
  3. Hallo,

    http://de.php.net/manual/de/function.str-getcsv.php
    Bestimmt das Feldtrennzeichen (nur ein Zeichen). Standardmäßig wird ein Semikolon verwendet.

    http://php.net/manual/en/function.str-getcsv.php
    Set the field delimiter (one character only). Defaults as a comma.

    was auch mich mal wieder in der Überzeugung bestärkt: Traue lieber der englischen Originaldoku.

    Was ist denn nun  Default-Delimiter? Komma oder Semikolon?

    Die Abkürzung "CSV" stand ursprünglich für "Comma Separated Values", das sagt schon das Wesentliche. Leider haben die Deutschen die dumme Angewohnheit, Dezimalzahlen mit einem Komma (also einem Trennzeichen) anstatt einem Dezimalpunkt zu schreiben. Deswegen mussten sie auch beim Feldtrennzeichen für CSV eigene Wege gehen. In der Folge wurde "CSV" dann auch gelegentlich als "Character Separated Values" interpretiert, manche Programme erlauben tatsächlich beliebige Feldtrennzeichen.
    Das treibt dann so seltsame Blüten, dass ein deutsches Excel beim CSV-Import keine ordentlich Komma-getrennten Werte mehr akzeptieren mag, sondern nur mit Semikolon getrennte Felder korrekt interpretiert (andernfalls muss man mit dem Import-Assistenten die Parameter von Hand einstellen).

    Im Endeffekt heißt das: Zunächst mal mit Komma als Trennzeichen versuchen. Wenn das nicht funktioniert, auf Semikolon ausweichen.

    So long,
     Martin

    --
    Mir geht es gut. Ich mag die kleinen Pillen, die sie mir dauernd geben.
    Aber warum bin ich ans Bett gefesselt?
    1. Hallo Martin,

      Das treibt dann so seltsame Blüten, dass ein deutsches Excel beim CSV-Import keine ordentlich Komma-getrennten Werte mehr akzeptieren mag, sondern nur mit Semikolon getrennte Felder korrekt interpretiert (andernfalls muss man mit dem Import-Assistenten die Parameter von Hand einstellen).

      da hab' ich ganz andere Erfahrungswerte. Standard bei Excel ist der Tabulator und wunderbare Semikolon-getrennte CSV-Dateien werden Einspalter ...

      Freundliche Grüße

      Vinzenz

      1. Hallo,

        da hab' ich ganz andere Erfahrungswerte. Standard bei Excel ist der Tabulator und wunderbare Semikolon-getrennte CSV-Dateien werden Einspalter ...

        holla ... ich weiß, dass mit einem guten alten Excel 97[1] auch komma-getrennte Dateien noch anstandslos geöffnet wurden, ein Excel 2003 sich da aber zickig anstellt. Tabulator als Trennzeichen habe ich bisher weder als Vorgabe des Programms gesehen, noch in real vorkommenden Dateien angetroffen.

        Ciao,
         Martin

        [1] Ja, Office 97 ist für mich die letzte Version, die noch einigermaßen stressfrei benutzbar ist. Seither ging's mit der Usability steil bergab.

        --
        Wenn alle das täten, wass sie mich können,
        käme ich gar nicht mehr zum Sitzen.
        1. Hallo Martin,

          [1] Ja, Office 97 ist für mich die letzte Version, die noch einigermaßen stressfrei benutzbar ist. Seither ging's mit der Usability steil bergab.

          ich sehe das völlig anders - insbesondere was Office 2007 betrifft.

          Freundliche Grüße

          Vinzenz

    2. Hi,

      was auch mich mal wieder in der Überzeugung bestärkt: Traue lieber der englischen Originaldoku.

      ja sollte ich mir auch angewöhnen, was den Übersetzer da allerdings geritten hat....

      Das treibt dann so seltsame Blüten, dass ein deutsches Excel beim CSV-Import keine ordentlich Komma-getrennten Werte mehr akzeptieren mag, sondern nur mit Semikolon getrennte Felder korrekt interpretiert (andernfalls muss man mit dem Import-Assistenten die Parameter von Hand einstellen).

      Das stimmt, ich erinnere mich jetzt auch wieder daran und wie ich mich darüber immer geärgert hatte.

      Allerdings finde ich Semikolon, oder noch besser ganz andere ungebräuchliche Zeichen als Trenner besser, aber leider gibt es ja kein Standards bei CSV, weder die optionale Einkapselung der einzelnen Werte noch ein definitives Trennzeichen. Zeit für ein neues Format dieser Art:
      tsvwq [ tilde seperated values without quotes] oder sowas ähnliches;-)

      Oli

      1. Hallo

        Hi,

        was auch mich mal wieder in der Überzeugung bestärkt: Traue lieber der englischen Originaldoku.

        ja sollte ich mir auch angewöhnen, was den Übersetzer da allerdings geritten hat....

        Stimmt, das hat mich auch gewundert. Normalerweise fehlen Anmerkungen zu neu hinzugekommenen Parametern einer Funktion oder Ähnliches, aber so eine richtig falsche Übersetzung ist mir vorher noch nicht untergekommen.

        Tschö, Auge

        --
        Die deutschen Interessen werden am Liechtenstein verteidigt.
        Veranstaltungsdatenbank Vdb 0.2