Autor |
Nachricht |
huedrant
Threadersteller
Dabei seit: 13.11.2006
Ort: Aschaffenburg
Alter: -
Geschlecht: -
|
Verfasst Fr 02.02.2007 16:07
Titel regulärer ausdruck gesucht, um XML-tags zu formen |
|
|
hallo!
ich habe hier eine textdatei, in der veranstaltungen eingetragen sind, und zwar immer nach dem gleichen schema:
Code: | bezeichnung: blabla
datum: blabla
ort: bla
bezeichnung: blabla2
datum: blabla2
ort: bla2 |
ich bin jetzt auf der suche nach einem regulären ausdruck, der mir die dateien so umformt, dass folgendes herauskommt:
Zitat: |
<bezeichnung>blabla</bezeichnung>
<datum>blabla</datum>
etc. |
mein bisheriger versuch sieht so aus:
kann mir da jemand helfen? ich möchte auf diese weise eine XML-datei erstellen, die ich in inDesign weiterverwenden kann.
Zuletzt bearbeitet von huedrant am Fr 02.02.2007 16:17, insgesamt 1-mal bearbeitet
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Fr 02.02.2007 16:29
Titel
|
|
|
Code: | <?php
$text = 'bezeichnung: blabla
datum: blabla
ort: bla
bezeichnung: blabla2
datum: blabla2
ort: bla2';
foreach (explode("\n", $text) as $line) {
echo preg_replace('/^([^\:]+): (.+)/', '<\1>\2</\1>', $line) . "\n";
}
?> |
|
|
|
|
|
Anzeige
|
|
|
huedrant
Threadersteller
Dabei seit: 13.11.2006
Ort: Aschaffenburg
Alter: -
Geschlecht: -
|
Verfasst Fr 02.02.2007 21:02
Titel
|
|
|
hey tacker!
cool, vielen dank für Deine schnelle antwort! das problem bei der lösung ist, dass ich leider nicht alles über die daten verraten habe: es gibt noch mehr felder, einige davon sind mehrzeilig und können auch Doppelpunkte enthalten. zb so:
Zitat: | beschreibung: wir machen das: blabla
nicht vergessen solltet ihr schuhe. |
also eigentlich ein regulärer ausdruck, mit dem ich der reihe nach die felder abarbeiten kann. erst bezeichnung mit tags versehen, dann datum und so weiter. es sind etwa 14 verschiedene felder.
hm. geht das überhaupt mit regulären ausdrücken? oder muss ich da erst die zeilenumbrüche rausnehmen?
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Sa 03.02.2007 00:56
Titel
|
|
|
Auch Zeilenumbrueche koennen Teil eines regulaeren Ausdrucks sein. Wie ist denn der genaue Aufbau deiner Daten -- dh woran genau erkennt man Anfang, Mitte und Ende eines Tupels?
|
|
|
|
|
huedrant
Threadersteller
Dabei seit: 13.11.2006
Ort: Aschaffenburg
Alter: -
Geschlecht: -
|
Verfasst Sa 03.02.2007 07:11
Titel
|
|
|
hm. leider sind die daten recht durcheinander formatiert. ich kann das natürlich mit dem texteditor etwas reduzieren, indem ich mit suchen/ersetzen neue pseudotags einführe.
also, ich habe jetzt einfach folgenden aufbau:
Code: | <veranstaltung>
__datum__ 10.2.07
__beschreibung__ blablab bla
lba lblbl
bla
__zeit__ 24 uhr
</veranstaltung> |
natürlich eben mit insgesamt 14 verschiedenen __pseudotags__
prinzipiell geht ein datensatz also von <veranstaltung> bis </veranstaltung>, dazwischen gehen die einzelnen felder immer von __pseudotag__ bis zum anfang des nächsten.
das müsste die sache doch deutlich vereinfachen, oder?
Zuletzt bearbeitet von huedrant am Sa 03.02.2007 07:12, insgesamt 2-mal bearbeitet
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Sa 03.02.2007 13:37
Titel
|
|
|
huedrant hat geschrieben: | das müsste die sache doch deutlich vereinfachen, oder? |
Vermutest du einfach mal? Nee, du musst nix "vereinfachen". Eine eindeutige Beschreibung deiner Daten reicht normalerweise aus -- fatal ist nur, wenn sich dein Datenformat nach jeder Antwort wieder aendert!
|
|
|
|
|
huedrant
Threadersteller
Dabei seit: 13.11.2006
Ort: Aschaffenburg
Alter: -
Geschlecht: -
|
Verfasst Sa 03.02.2007 14:33
Titel
|
|
|
also gut, jetzt bleibts ja dabei. vorher konnte man das echt nicht eindeutig beschreiben, das ist mir nach Deiner frage aufgefallen. darum hab ich's umgeformt.
hm. also ein tupel ist
__ptag__ - daten - zeilenumbruch - __neues tag__
ich hatte nach dem post von tacker mal sowas ähnliches wie das hier zusammengebaut. aber das geht nicht (was mich jetzt nicht sehr verwundert, aber ich hab mit der regex-syntax einiges an verständnisschwierigkeiten):
Code: |
/^([^\__]+)__(.+)/', '<\1>\2</\1> |
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Sa 03.02.2007 15:10
Titel
|
|
|
Wenn du es eh geandert hast, warum nicht nach TAG DOPPELPUNKT BESCHREIBUNG ZEILENUMBRUCH? Dafuer hast du doch tackers Code schon gehabt
Sind die <versanstaltungs>-Tags aus Version 20070302.0611 jetzt eigentlich deprecated???
Naja, mit regulaeren Ausdruecken hat jeder nicht-Autist anfangs Schwierigkeiten Versuchs doch mal so:
Code: | /^__(.+?)__(.+)/', '<\1>\2</\1>' |
dh:
^ Zeilenanfang
__ zwei Unterstriche
(.+?) Klammern zum merken. Mindestens ein Zeichen irgendwas ausser was nach der Klammer steht (?)
__ zwei Unterstriche
(.+) Rest der Zeile
|
|
|
|
|
|
|
|
Ähnliche Themen |
Regulärer Ausdruck gesucht
[PHP] Regulärer Ausdruck gesucht
Kurzer regulärer Ausdruck für PHP gesucht
Regulärer Ausdruck für XML
Regulärer Ausdruck / Hilfe
SQL-Statement und regulärer Ausdruck
|
|