Versuche mich gerade mit den
Regulären Ausdrücken auseinanderzusetzen.
Nun kommt ein Problem wo ich einfach nicht weis, wie ich weiterkommen soll.
Ich will eine externe HTML Seite auslesen und von der Tabelle nur noch die Informationen über rowspan und colspan behalten deswegen benutze ich
preg_replace() und der CODE sieht so aus:
PHP-Code:
$url='www.egal.de/anfrage.php';
$inhalt= implode ('', file ($url));
$suche = array ("'<table[^>]*?>'si",
"'<tr[^>]*?>'si",
"'<td ([^>]*? (?(?=colspan="[0-9]"*)(colspan="[0-9](?i)")*)(?(?=rowspan="[0-9]"?)(rowspan="[0-9](?i)")*)[^>]*?)>'im");
$ersetze = array ("<table>",
"<tr class=non>",
"<td class= 2 4 >");
echo('Ergebniss:<br>'.preg_replace($suche,$ersetze,$ergebnis));
Soweit so gut!
Mein Problem lieg hier:
'<td ([^>]*? (?(?=colspan="[0-9]"*)(colspan="[0-9](?i)")*)(?(?=rowspan="[0-9]"?)(rowspan="[0-9](?i)")*)[^>]*?)>'im
Erklärung:
<td //is klar
[^>]*? // es td-Tag soll noch nicht mit ">" wieder geschlossen werden können
(?(?=colspan="[0-9]"*)(colspan="[0-9](?i)")*) // wenn colspan im Tag, dann auslesen
Das schöne ist, colspan wertet er richtig aus; Das gleich habe ich mit rowspan dahintergehangen, aber dat findet er offensichtlich nicht doch warum?
Hier mal ein Ausschnitt aus dem betroffnen, auszulesenden Quelltext
Zitat:
<table border="0" cellspacing="0" cellpadding="0" align="center" width="100%">
</tr>
<tr>
<td align="right" valign="top" class="mad2" rowspan="2">a</td>
<td class="mad3"></td>
<td class="mad2" align="right">21.05.2004</td>
</tr>
<tr>
<td class="mad2" colspan="2">Text</td>
</tr>
</table>
|