elosh: Zeichenkette splitten -- Leerstelle überspringen

Hi Leute,

ich möchte eine Zeichenkette splitten. Trennzeichen ist ein Komma. Funktioniert auch, nur bei einem Doppelnamen ist noch eine Leerstelle vorhanden. Mein Code betrachtet diese Leerstelle auch als Trennzeichen, obwohl ichs gar nicht festgelegt hab.

Wieso?

Gruss,
elosh

  1. Hello,

    ich möchte eine Zeichenkette splitten. Trennzeichen ist ein Komma. Funktioniert auch, nur bei einem Doppelnamen ist noch eine Leerstelle vorhanden. Mein Code betrachtet diese Leerstelle auch als Trennzeichen, obwohl ichs gar nicht festgelegt hab.

    Wieso?

    Wie macht sich das bemerkbar?
    Wie splittetet dein Programm denn den String?
    Hast Du das selber geschrieben, oder benutz Du eine fertige Funktion (wordwrap() o.ä.) ?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Wie macht sich das bemerkbar?

      Bsp: Hans Muster Müller, 28
      Hans Muster Müller soll in eine Spalte und 28 in die andere, aber er packt alle Worte in einzelne Spalten in der DB. Er trenn auch bei der Leerstelle

      Wie splittetet dein Programm denn den String?

      so:  $tmp      = split('[,]', $inputsp);

      elosh

      1. Wie splittetet dein Programm denn den String?

        so:  $tmp      = split('[,]', $inputsp);

        entsprechend:

        // trennen der Strings (ich würde besser ; benutzen, aber naja...)
        $tmp = explode(",", $inputsp);

        // Leerzeichen am Anfang/Ende der einzelnen Strings entfernen
        for($i=0; $i<count($tmp); $i++) { $tmp[$i] = trim($tmp[$i]); }

        Dann kannst du auf das Array $tmp zugreifen und alle Wert in deine DB speichern...

        Gruss Stefan

        1. $tmp = explode(",", $inputsp);

          hatte ich vorher, hat nicht funktioniert.

          Ich versuchs mal mit deiner Lösung, ma schaun.
          Danke

          1. Es wird auch nicht ganz klar was du machen willst...

            Es klingt so, als würdest du einen kompletten String mit Werten, die mit komma getrennt sind haben und den NUR an den Stellen der Kommas trennen wollen. Das klappt wunderbar mit der genannten Lösung, wenn es aber nicht das ist was Du suchst, musst Du es mal besser umschreiben...

            Wenn Du es GENAU so hattest, dann muss es auch funktioniert haben ;-)

            Gruss Stefan

            1. schau mal, so hab ichs jetzt:

              // Spalten nach Tabellen sortieren
                  $daten_array = split("(\n)", $daten);
                  for ($l = 0; $l < count($daten_array); $l++)
                  {
                         $tmp = explode(",", $inputsp);
                          $datentmp = split('[, ]', $daten_array[$l]);
                          $j = 0;

              for($i = 0; $i < count($tmp); $i++)
                          {
                     $tmp[$i] = trim($tmp[$i]);
                            if(!($tmp[$i] == "person_ID") and
                               !($tmp[$i] == "paper_ID") and
                               !($tmp[$i] == "comments"))
                            {
                              $inputsp_p[$j] = $tmp[$i];
                              $daten_p[$j] = $datentmp[$i];
                              $j++;
                            }
                          }
                          }

              ein Text wird erst beim Auftreten von Zeilenumbrüchen gesplittet, das Ergebnis steht in daten_array.
              Jetzt soll gesplittet werden, wenn ein Komma auftritt .
              Bei der if-schleife wird nur überprüft, in welcher Tabelle die Spalten vorkommen.

              Ich mach was falsch

              1. Hello,

                ein Text wird erst beim Auftreten von Zeilenumbrüchen gesplittet, das Ergebnis steht in daten_array.

                Jetzt soll gesplittet werden, wenn ein Komma auftritt .
                Bei der if-schleife wird nur überprüft, in welcher Tabelle die Spalten vorkommen.

                Schau mal ganz oben im Thread. Das Wesentliche geht in einer Zeile! PHP ist mächtig. Da gibt es für viele tägliche komplexe Jonglierereien schon fertige Funktionen.

                Die Zuordnung der alten Spalten zu den neuen in der DB kann PHP natürlich nicht vorhersehen und deshalb musst Du die noch selber machen.

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            2. Hey, danke!
              Es funktioniert doch!!!!!!!1

            3. geht das auch mit ganzen leerzeilen, so dass ich leere davor und dahinter überspringe?

  2. $string = "Name;Vorname Doppelname;Strasse;Hausnummer;PLZ;Ort";
    $werte = explode(";", $string);

    damit hast du keine probleme...

    grüsse
    Stefan

    1. bei deinem Beispiel sorgst du doch schon vor, aber es soll möglich sein, dass der Benutzer einfach im Namen-Feld Hans Müller reinschreiben kann, ohne dass Hans Müller in verschiedenen Spalten in der DB landen.

      Deine Lösung versteh ich nicht wirklich gut?

      elosh

  3. Hello,

    könnte es sein, dass dir http://de.php.net/manual/de/function.fgetcsv.php etwas nützen könnte?

    Dein Problem hört (weiter unten) doch verflict nach einer Datenübernahme an.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen