tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
358
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DoRiMaN DoRiMaN ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    102
    Hallo!

    Ich habe ein Problem mit einem Regulären Ausdruck für die Funktion preg_split().

    Der Benutzer gibt in einem Formular verschiedene Parameter ein, durch ein Komma getrennt. Z.B.
    Code :
    1
    
    abc,def,ghi,jkl,mnl,opq
    Diese Parameter werden dann in PHP eingelesen, mit explode getrennt, und separat verarbeitet.

    Nun möchte ich dem Benutzer die Möglichkeit geben, auch Kommas selbst in den Parameternamen zu verwenden. Leider ist die oben erwähnte Schreibweise vorgegeben, die darf ich nicht ändern, auch nicht durch Semikolon trennen lassen.

    So bin ich auf die Funktion preg_split() gekommen. Ich kann damit leben, wenn der Benutzer die eigenen Kommas escapet, also \, schreibt wenn er ein Komma machen möchte. Dies dürfte nicht allzu oft vorkommen, also ist es nicht weiter schlimm.
    Deshalb diese RegEx, damit nur bei einzelnen Kommas gesplittet wird:
    PHP-Code:
    $arr preg_split('/[^\\\],/'$data); 
    Dies Funktioniert auch, jedoch nicht ganz korrekt. Die Ausgabe:
    Code :
    1
    2
    3
    4
    
    Array ([INDENT][0] => abc 
    [1] => de 
    [2] => gh 
    [3] => jkl\, mnl[/INDENT])
    Das eigene, escapte Komma wurde also nicht getrennt, was irchtig ist, jedoch fehlt bei jedem anderen Array-Element das letzte Zeichen, also f, i, etc...
    Das ist im Nachhinein auch logisch, da ich das einte Zeichen VOR dem Komma ja auch trenne!

    Ich weiss aber nicht, wie ich das jetzt so umgehen könnte, dass das ^\\\ nur als Prüfung beachtet wird, und dann nicht auch bei der Trennung verwendet wird.

    Kann mir da jemand helfen?


    Danke und Gruss
    doriman
     
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25...

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das davor stehende Zeichen darf nicht als Teil des übereinstimmenden Textes und damit Teil der Trennsequenz behandelt werden. Probier mal Folgendes:
    Code :
    1
    
    /(?<!\x5C),/
     
    Markus Wulftange

  3. #3
    DoRiMaN DoRiMaN ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    102
    Das ergibt Sinn, und es funktioniert einwandfrei!

    Vielen Dank
     
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25...

Ähnliche Themen

  1. XML-Parser mit preg_split
    Von einfach nur crack im Forum PHP
    Antworten: 6
    Letzter Beitrag: 16.04.09, 19:18
  2. Problem mit preg_split()
    Von Manuel Hegemann im Forum PHP
    Antworten: 2
    Letzter Beitrag: 05.03.08, 15:34
  3. Antworten: 1
    Letzter Beitrag: 21.01.08, 16:58
  4. preg_split() - Trennen
    Von oldputz1990 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 06.09.07, 20:13
  5. preg_split
    Von melmager im Forum PHP
    Antworten: 3
    Letzter Beitrag: 04.09.02, 21:30