ilch Forum » Allgemein » HTML, PHP, SQL,... » " entfernen (MSSQL Array)

Geschlossen
  1. #1
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    Guten Tag!

    Folgendes:

    Ich habe einen Array, wo einige Elemente das " - Zeichen am Anfang und am Ende haben. Nun möchte ich das " entfernen und das Ergebnis aber als Array behalten - wie stelle ich das am Besten an?

    Probiert habe ich schon stripslashes($array), aber dann ist mein Ergebnis kein Array mehr, sondern ein String -.-

    Danke für Hilfe!

    Hier mal mein konkreter Code:

    fputcsv($fp, str_replace('\"', '', $line), chr(9));


    stripslashes hat hier ebensowenig funktioniert wie str_replace. Folgende Variante habe ich ebenfalls ausprobiert:

    fputcsv($fp, str_replace(chr(34), '', $line), chr(9));


    ebenfalls nicht von Erfolg gekrönt.


    Zuletzt modifiziert von CeeJay am 02.07.2014 - 15:45:45
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    1.096
    Beitragswertungen
    122 Beitragspunkte
    $array = array(
        'name' => '"John"',
        'surname' => '"Doe"',
        'email' => '"j.doe@intelligence.gov"'
     );
    
    $string = implode(' ', $array);
    $string2 = str_replace('"','',$string);
    
    
    $array2 = explode( ' ', $string2 );
    echo var_dump($array2);


    So müsste es gehen.

    Mfg corian
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    $items = ['"test"', '"123"', '"test23"'];
    
    $items = array_map(function ($value) {
        return trim($value, '"');
    }, $items);


    Bisschen eleganter. Entfernt so allerdings wirklich nur Slashes, die direkt am Anfang und Ende des Strings sind. Alternativ kann man dem zweiten Parameter von trim() noch ein einfaches Whitespace mitgeben, dann werden auch die entfernt.

    So:
     trim($value, '" ');



    Zuletzt modifiziert von dastiii am 02.07.2014 - 23:38:19
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    das hat leider nicht funktioniert...

    ich weiss jetzt aber, was das Problem ist, nur die Lösung lässt noch auf sich warten:

    fputcsv schließst Felder mit Leerzeichen in sogenannte Enclousures ein (in meinem Fall die Anführungszeichen "TEXT"). Laut Doku kann man dieses Zeichen etweder weglassen, dann wird automatisch bei Feldern mit Leerzeichen ein "" hingezaubert, oder aber man bestimmt dieses Zeichen. Das ASCII-Zeichen für Nichts ist chr(0) - das erzeugt bei mir aber ein NUL -.-

    Ich weiss nicht weiter, ich möchte einfach garkeine Enclousure-Zeichen haben, habe aber keine Idee, wie ich dies umsetzen kann. HILFE!!
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beiträge
    1.096
    Beitragswertungen
    122 Beitragspunkte
    $fp = fopen('file.csv', 'w');
    $array = array('"John"','"Doe"','"j.doe@intelligence.gov"');
    $array = str_replace('"', '', $array);
    
    fputs($fp, implode($array, ',')."\n");


    wie siehts denn so aus?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Probier mal , NULL zu übergebenen. Wenn das nicht geht brauchst du einem anderen Writer.
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    ZitatZitat geschrieben von Pion
    Probier mal , NULL zu übergebenen. Wenn das nicht geht brauchst du einem anderen Writer.


    Wie meinst du das? Soll ich mal chr(0) in meinem Array mit übergeben?
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Übergeb der Funktion mal einen 4TEN Parameter "null", also:

    fputcsv($fp, str_replace('\"', '', $line), ';', null)

    Parameter 3 ist übrigens Tremmzeichen.
    Wenm das nicht geht nimm nen csv writer oder sowas wie corian.

    Ps schreibe gerade vom Lissabon mit Handy kamm nicht besser helfen.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    ZitatZitat geschrieben von Pion
    Übergeb der Funktion mal einen 4TEN Parameter "null", also:

    fputcsv($fp, str_replace('\"', '', $line), ';', null)

    Parameter 3 ist übrigens Tremmzeichen.
    Wenm das nicht geht nimm nen csv writer oder sowas wie corian.

    Ps schreibe gerade vom Lissabon mit Handy kamm nicht besser helfen.


    Yeah! Schönen Urlaub Dom zwinker

    ich hab das mit dem null-Wert probiert, funktioniert aber nicht, weil null kein Char-Wert ist, der übergeben wird:

    Warning: fputcsv(): enclosure must be a character in C:\xampp\htdocs\organice\tbeintraege.php on line 346
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Die Frage für mich ist, warum willst du das Enclosure nicht, es ist sonst keine gültige CSV Datei?

    Was soll damit gemacht werden im Anschluss?
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten