Verarbeitung einer HTML-Seite mit regulären Ausdrücken

ragnaroek87

Grünschnabel
Guten Tag liebe Tutorials.de Community,
ich möchte gerne eine Html-Datei mit folgendender, zur Übersicht stark vereinfachter, Struktur in eine iCalender-Datei umwandeln. Ich bin im Umgang mit regulären Ausdrücken auch schon bewandert und bekomme die Umformung an sich auch hin.
Das Problem wo ich nicht weiter komme ist eientlich nur wie ich möglichst einfach das passende Datum zu jedem einzelnem Termin bekomme, so das ich zum Schluss daraus die iCalender-Datei formen kann.

Würde mich über Hilfe sehr freuen.

Mit freundlichen Grüßen,
Christian

HTML:
<table>
	<tr class="tabeltitel">
		<td class="datum">Mittwoch 15-Oktober-2008</td>
	</tr>
	<tr>
		<td class="zeit">10:30  - 12:00</td>
		<td class="fach">Deutsch</td>
		<td class="dozent">Herr XY</td>
	</tr>
	<tr>
		<td class="zeit">13:30  - 15:00</td>
		<td class="fach">Mathe</td>
		<td class="dozent">Frau YZ</td>
	</tr>

	<tr class="tabeltitel">
		<td class="datum">Freitag 17-Oktober-2008</td>
	</tr>
	<tr>
		<td class="zeit">8:30  - 10:00</td>
		<td class="fach">Physik</td>
		<td class="dozent">Herr QP</td>
	</tr>
	<tr>
		<td class="zeit">12:30  - 14:00</td>
		<td class="fach">Mathe</td>
		<td class="dozent">Frau YZ</td>
	</tr>      

</table>
 
Das Problem ist ja das, das das Datum von der Struktur her auf der gleichen Ebene ist wie die Termine auf dem Datum und das die Termine dem Datum nicht untergeordnet sind.
 
Die Auszeichnung der Daten ist aber eindeutig. So kennzeichnet class="tabeltitle" anscheinend das Datum der nachfolgenden Daten. Und das lässt sich wunderbar verarbeiten:
PHP:
$simpleXml = simplexml_load_string($xml);
foreach ($simpleXml->tr as $tr) {
	if (isset($tr['class']) && (string)$tr['class']=='tabeltitel') {
		echo '<h2>'.$tr->td.'</h2>';
		// Datum
	} else {
		echo '<ul>';
		foreach ($tr->xpath('td') as $td) {
			echo '<li>'.$td.'</li>';
		}
		echo '</ul>';
	}
}
 
Ich werde das nachher mal ausprobieren.

Mir ist dabei grade auch noch ne Idee gekommen kann man Reguläre Ausdrücke mit for-each Kontrukten kombinieren in der Form von:
Bei jedem Auftauchen von "<tr>" zu gucken ob es sich um ein Datum oder einen Termin handelt.
 
Das ist viel zu umständlich wenn man doch so ein schön strukturiertes Datenformat wie XML hat.
 
Zurück