Problem mit auslesen einer Datei...

Psychokiller

Mitglied
Hallo,

also es geht sich darum das es für das Spiel World of Warcraft ein Addon gibt welches sachen aufzeichnet usw. diese aufzeichnungen kann man sich dann als eine art xml Text ausgeben lassen.
Das sieht dann so aus:
HTML:
<?xml version="1.0"?><!DOCTYPE ML_Raidtracker PUBLIC "-//MLdkp//DTD ML_Raidtracker V 1.5//EN" "http://www.mldkp.net/dtds/1.0/ML_Raidtracker.dtd">
<raidinfo>
	<loots>
		<loot>
			<itemname>Angesengter Großhelm</itemname>
			<itemid>39723:0:0:0:0:0:0:1280381704:80</itemid>
			<count>1</count>
			<player>Grogal</player>
			<time>1231699509</time>
			<zone>Naxxramas</zone>
			<boss>Grand Widow Faerlina</boss>
		</loot>
		<loot>
			<itemname>Berührung des Grauens</itemname>
			<itemid>40335:0:0:0:0:0:0:1298057582:80</itemid>
			<count>1</count>
			<player>Ondit</player>
			<time>1231707714</time>
			<zone>Naxxramas</zone>
			<boss>Gothik the Harvester</boss>
		</loot>
		<loot>
			<itemname>Brustplatte des verlorenen Beschützers</itemname>
			<itemid>40626:0:0:0:0:0:0:1535700794:80</itemid>
			<count>1</count>
			<player>Mith</player>
			<time>1231710802</time>
			<zone>Naxxramas</zone>
			<boss>Trash mob</boss>
		</loot>
		<loot>
			<itemname>Der unmögliche Traum</itemname>
			<itemid>40244:0:0:0:0:0:0:1042310536:80</itemid>
			<count>1</count>
			<player>Mardoc</player>
			<time>1231703970</time>
			<zone>Naxxramas</zone>
			<boss>Loatheb</boss>
		</loot>
		<loot>
			<itemname>Dämmerungswanderer</itemname>
			<itemid>39701:0:0:0:0:0:0:1564587004:80</itemid>
			<count>1</count>
			<player>Antìbus</player>	
			<time>1231698600</time>
			<zone>Naxxramas</zone>
			<boss>Anub'Rekhan</boss>
		</loot>
		<loot>
			<itemname>Fußlappen der niederträchtigen List</itemname>
			<itemid>40243:0:0:0:0:0:0:773875080:80</itemid>
			<count>1</count>
			<player>Zonenboy</player>
			<time>1231703936</time>
			<zone>Naxxramas</zone>
			<boss>Loatheb</boss>
		</loot>
		<loot>
			<itemname>Fußlappen des zerrissenen Netzes</itemname>
			<itemid>39762:0:0:0:0:0:0:1046679294:80</itemid>
			<count>1</count>
			<player>Burnóut</player>
			<time>1231700934</time>
			<zone>Naxxramas</zone>
			<boss>Maexxna</boss>
		</loot>
		<loot>
			<itemname>Geschätzte Bindungen</itemname>
			<itemid>40323:0:0:0:0:0:0:-2082371634:80</itemid>
			<count>1</count>
			<player>disenchanted</player>
			<time>1231705785</time>
			<zone>Naxxramas</zone>
			<boss>Instructor Razuvious</boss>
		</loot>
		<loot>
			<itemname>Handschuhe des Tanzbären</itemname>
			<itemid>40238:0:0:0:0:0:0:1554054875:80</itemid>
			<count>1</count>
			<player>disenchanted</player>
			<time>1231703090</time>
			<zone>Naxxramas</zone>
			<boss>Heigan the Unclean</boss>
		</loot>
		<loot>
			<itemname>Mantel des verlorenen Beschützers</itemname>
			<itemid>40638:0:0:0:0:0:0:1579181448:80</itemid>
			<count>1</count>
			<player>Burnóut</player>
			<time>1231704009</time>
			<zone>Naxxramas</zone>
			<boss>Loatheb</boss>
		</loot>
		<loot>
			<itemname>Mantel des verlorenen Beschützers</itemname>
			<itemid>40638:0:0:0:0:0:0:1310745992:80</itemid>
			<count>1</count>
			<player>Psychokiller</player>
			<time>1231704001</time>
			<zone>Naxxramas</zone>
			<boss>Loatheb</boss>
		</loot>
		<loot>
			<itemname>Salonschärpe</itemname>
			<itemid>39721:0:0:0:0:0:0:2101457916:80</itemid>
			<count>1</count>
			<player>Bioholix</player>
			<time>1231698662</time>
			<zone>Naxxramas</zone>
			<boss>Anub'Rekhan</boss>
		</loot>
		<loot>
			<itemname>Schienbeinschützer der Buße</itemname>
			<itemid>39734:0:0:0:0:0:0:1817252616:80</itemid>
			<count>1</count>
			<player>disenchanted</player>
			<time>1231699574</time>
			<zone>Naxxramas</zone>
			<boss>Grand Widow Faerlina</boss>
		</loot>
		<loot>
			<itemname>Schulterschutz der Möglichkeiten</itemname>
			<itemid>40185:0:0:0:0:0:0:1287854848:80</itemid>
			<count>1</count>
			<player>Mith</player>
			<time>1231702103</time>
			<zone>Naxxramas</zone>
			<boss>Noth The Plaguebringer</boss>
		</loot>
		<loot>
			<itemname>Stängelhautgürtel</itemname>
			<itemid>40205:0:0:0:0:0:0:1017183963:80</itemid>
			<count>1</count>
			<player>Zonenboy</player>
			<time>1231703039</time>
			<zone>Naxxramas</zone>
			<boss>Heigan the Unclean</boss>
		</loot>
		<loot>
			<itemname>Tunika des maskierten Leidens</itemname>
			<itemid>40193:0:0:0:0:0:0:1556290304:80</itemid>
			<count>1</count>
			<player>Burnóut</player>
			<time>1231702123</time>
			<zone>Naxxramas</zone>
			<boss>Noth The Plaguebringer</boss>
		</loot>
		<loot>
			<itemname>Zuverlässige Stahlsabatons</itemname>
			<itemid>40320:0:0:0:0:0:0:1944160206:80</itemid>
			<count>1</count>
			<player>Garisson</player>
			<time>1231705817</time>
			<zone>Naxxramas</zone>
			<boss>Instructor Razuvious</boss>
		</loot>
	</loots>
</raidinfo>

Jetzt habe ich ein Script welches eigentlich gewisse sachen ausliest aus diesem Text dafür füge ich den Text in ein textare feld ein und speichere das ganze in eine .xml Datei welche ich dann wieder auslese und die sachen welche ich möchte rausfilter. Das ganze hat immer funktioniert jedoch spinnt das Script nun rum und hängt an den Sonderzeichen denn entweder bricht das Script bei einem Sonderzeichen ab oder gibt mir anstelle von Sonderzeichen ä aus. Evtl. könnt ihr mir ja helfen wie ich das ganze wieder zum laufen zu bekommen.

Script steht im zweiten Post!
 
Zuletzt bearbeitet:
Hier mal das Script:
xml1.php
PHP:
<?php
$xml=$_POST['xml'];
$rid=$_POST['rid'];
// Wenn das Formular ausgefüllt ist soll er das ganze in die Datei 1.xml schreiben.
if (!empty($rid) AND !empty($xml))
    {
    $xml=stripslashes($xml);
	//Hier werde der "DKP String" in die Datei 1.xml geschrieben.
    $Datei = "1.xml";
    $FilePointer = fopen($Datei, "w+");
    fwrite($FilePointer, utf8_encode($xml)); //Hier benutze ich utf8_encode da es sonst bei der Bearbeitung Probleme gibt.
    fclose($FilePointer);
	//Wenn alles in die Datei 1.xml geschrieben ist wird die Datei zum bearbeiten eingebunden.
    include "xml.php";
    }

// Hier ist das Formular zum eingeben des "DKP Strings" also das was bearbeitet werden soll.
if (!empty($rid) AND empty($xml))
    {?>
<form method="post" action="index.php?show=xml1">
<table>
    <tr>
        <td>Dkp String</td>
    </tr>
    <tr>
        <td><textarea cols="100" rows="40" name="xml"></textarea></td>
    </tr>
    <tr>
        <td>
        <input type="hidden" name="rid" value="<?php echo $rid; ?>">
        <input type="submit" name="senden" value="Senden"></td>
    </tr>
</table>
</form>
<?php }?>

xml.php
PHP:
<?php
// Diese Funktion soll Sonderzeichen umwandeln hier im Forum leider etwas schlecht da das Forum irgendwie den $ersetzungs array umwandelt. :S
function uni_code($string){


    $zeichen = array(" ","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ");
    $ersetzung = array("","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ");

    return str_replace($zeichen,$ersetzung,$string);
}
// 1.xml wird ausgelesen.
$Daten = file('1.xml'); 

//Array $Daten wird nach Sonderzeichen durchsucht und sollen dann von der Funktion uni_code() ersetzt werden.
foreach($Daten as $key => $value){ 

    $val1 = explode('>',$value); 
    if($val1[1])
    {
        $val2 = explode('<',$val1[1]);
        if($val2[0]) 
        {
            $Daten[$key]=ereg_replace($val2[0],uni_code($val2[0]),$Daten[$key]);

        }

    }


}

$Daten_clean = implode('',$Daten);

// Wenn ich hier $Daten_clean ausgebe sind sonderzeichen unnormal!

$Parser = xml_parser_create();
xml_parse_into_struct($Parser, $Daten_clean, $arrValues, $arrIndex);
xml_parser_free($Parser);

?>


MfG

Psycho
 
Zuletzt bearbeitet:
Habe es jetzt hinbekommen das er schonmal alles in die Datenbank speichert jetzt besteht nur noch das Problem das er es jetzt so Angesengter Großhelm oder Antìbus speichert und es auch so ausgibt was irgendwie ätzend aussieht. :S

Der veränderte Code steht oben
 
Glaub das ist alles so viel zu lesen und da muss man sich einarbeiten um dir eine Lösung anzubieten - deswegen antwortet keiner.

Wenn ich die Zeichen so sehe die du erhälst dann scheint das eine Sache von der Kodierung zu seien und verweise mal pauschal auf die Funktionen: utf8_encode und utf8_decode
 
Vielen Dank für deine Antwort!
Ich dachte einfach ich Poste gleich alles damit man mir schnell helfen kann, aber da habe ich wohl falsch gedacht. Werde dann mal kürzen was sich kürzen läßt und auch ein paar Kommentare einfügen damits schneller verständlicher ist. ;)

//edit

benutze utf8_encode in der ersten datei beim schreiben in die 1.xml da ohne das die bearbeitung einfach bei einem sonderzeichen ganz abbricht. :S
 
Zurück