Hallo Ihr alle!
Nun möchte ich aber das auch innerhalb eines Werts ein Doppelpunkt stehen kann... z.b für URLs... also:
wert1:http://www.url.de:wert3:etc...
wie weiße ich das Script an den Doppelpunkt in der URL zu übergehen, also keinen split durchzuführen?
Das ganze funktioniert mit einer "zero-width negative lookbehind assertion" :) Es wird nach hinten 'gen Anfang geschaut (lookbehind) ohne den entsprechenden Teilstring mit ins Ergebnis zu übernehmen (zero-width). Ausserdem soll der entsprechende Teilstring NICHT vorhanden sein (negative). Das ganze sieht dann so aus:
split( /(?<!http):/, $datenzeile);
Hat man mehrere Strings muss man auf die Länge achten, da in dieser Form der lookbehind eine fixe Länge haben muß. Hat man also mehrere Texte gleicher Länge, kann man sie per oder mit in die Klammer nehmen. Ansonsten gibt es halt noch eine Klammer. Zum Beispiel mal mit http, mail und ftp:
split( /(?<!httpmail)(?<!ftp):/, $datenzeile);
Viel Spaß,
Jörk