*.x-File parsen

Jens B.

Erfahrenes Mitglied
Hi

Ich möchte gerne ein *.x-File so parsen, dass ich bestimmte Einträge daraus in eine Textdatei speichern kann.

Das laden, speichern usw. macht mir keine Probleme, doch ich bekomm es einfach nicht hin die entsprechenden Werte rauszusuchen, da die Formatierung von den X-Files (die Wahrheit liegt irgendwo da draußen...) sich auf ; und , beschränkt.

Am besten ich zeig euch mal ein Beispiel-X-File...

Code:
xof 0302txt 0064 //Header String, MUSS immer ganz am Anfang sein

Material Mein_Material {
 // uninteressant
}

Mesh Mein_Mesh { // jetzt kommt unser 3D-Objekt!
	8;						 // Anzahl der Punkte
	100.0000; 100.0000; -100.0000;,			// Punkt 0 X;Y;Z;,
	-100.0000; 100.0000; -100.0000;,			// Punkt 1
	-100.0000; 100.0000; 100.0000;,			// Punkt 2
	100.0000; 100.0000; 100.0000;,			// Punkt 3
	100.0000; -100.0000; -100.0000;,			// Punkt 4
	-100.0000; -100.0000; -100.0000;,		// Punkt 5
	-100.0000; -100.0000; 100.0000;,			// Punkt 6
	100.0000; -100.0000; 100.0000;,			// Punkt 7

	6;			// Anzahl der Faces (Polygone) im Mesh
				// Erste Zahl = Anzahl der Punkte pro Polygon

	4; 1,2,6,5;,		// Face 0
	4; 5,6,8,7;,		// Face 1
	4; 7,8,4,3;,		// Face 2
	4; 3,4,2,1;,		// Face 3
	4; 7,3,1,5;,		// Face 4
	4; 4,2,6,8;,		// Face 5

	MeshMaterialList {
		// uninterressant
	}
	MeshNormals {
		// uninteressant
	}
	MeshTextureCoords {
		// uninteressant
	}
}

Ich habs mal auskommentiert und alle Daten, die ich brauche, eingetragen. Ich hab bisher gedacht, dass ich das alles nach und nach durchgehe und dann immer die Werte zwischen ; und ; nehme (oder , oder irgendwas) aber ich habe leider Gottes keine Ahnung, wie ich ich Php sowas mache..

(Den Dateizeiger mit fseek() verschieben ok, aber wie nehme ich den Text zwischen dieser Stelle und dem nächsten ; ?
Und wie stelele ich fest dass ich am Zeilenende bin bzw wie gehe ich eine Zeile weiter

Ich hoffe ihr könnt mir helfen...
liebe Grüße,
Jens ;)
 
vielleicht helfen da wieder einmal die -Regulären Ausdrücke- in Verbindung mit preg_match().
Zeilenenden werden doch immer mit dem \n gekennzeichnet?
Zeilenweise auslesen geht mit fgets().
 
Ok, eine Frage noch... wenn ic das ganze jezt so mache:

PHP:
<?php
$datei = fopen($dateiname,"r");

if(fgets($datei, 4096) == "xof 0302txt 0064") {

} else {
 echo("Fehler");
}
?>

Geht das? Ich mein vor allem die if-Bedinung, denn der Text ist ja viel kürzer als die Zeile ggf. ist (Kommentare usw) und außerdem hab ich im fget ja 4096 angegeben (was der länge einer Zeile entspricht wie ich irgendwo gelesen habe...).

Gruß
Jens
 
Zurück