Das erste Problem bei HTML-Tabellen ist eigentlich, dass die Überschriften immer ganz oben stehen, und Du den Spalten-index in einer/mehreren Variablen/Array speichern müsstest.
Wenn Du nur eine ganz normale Tabelle auslesen willst - kein großes Problem.
Wenn Du allerdings colspans drinnen hast müssen nicht nur die tds gezählt werden sondern auch noch der Colspan-Wert.
Wenn der Colspan über CSS festgelegt wird, wäre es vielleicht einfacher nach vorgefertigten Klassen zu Fragen.
Es ist also Deine Sache, ob nur diese Version verändert werden soll, oder vielleicht auch mögliche zukünftige.
Momentan ist die erste Tabellenzeile nur eine ganz normale Zeile, und die Tabelle ist nur HTML. ( Wenn ich nichts übersehen habe. )
Es sind also keine speziellen Kopfzeilen zu berücksichtigen ( die haben andere Tags ).
Jetzt werden eigentlich nur 3 Funktionen benötigt:
PHP: strpos(string, gesuchterString, startPosition); und substr(string, startPosition, länge);
JavaScript-Equivalente sind: PHP: string.indexOf(gesuchterString, startPosition); und string.substr(startPosition, länge);
Und eine trim-funktion wäre noch nützlich, aber die zu finden überlasse ich mal Dir 
Dokument bearbeiten mit JavaScript:[code]var content = document.getElementsByTagName(“html”)[0];
» // content bearbeiten
document.open();
document.write
( // doctype
- “”
- content
- "
);
document.close();[/code]
Der zugehörige Code ist etwa so ( ich nehme mal JavaScript an, aber nach PHP zu übersetzen dürfte nicht schwer sein wenn Du Dich an eine solche Aufgabe heranwagst. ):
var spalte;
var iSpalte;
spalte[0] = 'spaltenname1';
// ...
start = content.indexOf("<table>");// Startposition
end = content.indexOf("</table>")// das Ende
for( var i=0 ; i<spalte.length ; i++ )
{ for( var iCell=0 ; true ; iCell++ )
{ cellStart = content.indexOf("<td>", start)+4// länge <td>
; cellEnde = content.indexOf("</td>")
; cellContent = trim content.substr(spalteStart, spalteEnde-spalteStart)
; if( spalte[i] == cellContent )
{ iSpalte[i] = iCell
break;
}
start = cellEnde
}
}// jetzt hast Du in iSpalte[i] den jeweiligen Spaltenindex, nicht den Namen
// verbessern könnte man das ganze noch mit einer weiteren start-Variable, die für jedes i zurückgesetzt wird ( ist zwar langsamer, aber die Reihenfolge ist dann egal )
Un die Spalten auszulesen kannst Du einfach in jedem
bis
eine Zählervariable laufen lassen, die die
s wie hier zählt und den startwert mitzieht, sodass immer der folgende Tag gelesen wird.
Wenn Du überprüfen willst, ob das tag-ende erreicht ist, nimm die end variable als beispiel ( natürlich immer von start aus gesehen ) und überprüfe in jedem durchlauf td-ende < tr-ende bzw tr-ende < table-ende.
if iCell == irgendeine(iSpalte): schreibe den Inhalt in tr-results.
Nach jeder Zeile: schreibe tr-results in table-results, setze tr-results für den nächsten durchlauf zurück.
Wenn das Tabellenende erreicht ist, hast Du den ersten Teil ja schon geschaft 
Tabelle erstellen:var result = "<table>";
for( var i=0 ; i < table-results.length ; i++ )
{ result += "<tr>";
; for( var iCell=0 ; i < tr-results.length ; i++ )
result += "<td>"+tr-results[iCell]+"</td>"
; result += "</tr>"
}
result += "</table>"
OK - Wenn Du alles verstanden hast, hast Du es fast geschafft 
Jetzt nur noch ein wenig überlegen, die absichtlich falsch geschriebenen Variablen so bennenen, dass sie Deinen Bedürftnissen entsprechen und ein wenig testen.
Sollten weitere Probleme auftreten:
http://de.selfhtml.org/javascript/objekte/node.htm für die document-Interaktion,
http://de.selfhtml.org/javascript/index.htm für allgemeine Java-Probleme und
http://php.net/ für PHP Probleme
Sorry das ich das hier ein wenig übereilt abschicke, aber ich habe noch wichtige Termine heute.
PS: Die Seite mit der Tabelle lädt sehr langsam 
|