Hallo zusammen,
ich bin derzeit damit beschäftigt eine Anmeldung für ein (Rollenspiel) Event zu erstellen.
Die Daten sollen anschließend in ein XML Verpackt werden, das wir diese weiter aufarbeiten können.
Dazu nutze ich unter anderem folgende Funktion:
Das ganze hat wunderbar funktioniert, bis ich vor etwa zwei Wochen von meinem Provider den Hinweis bekommen hab, das ich doch PHP Updaten soll.
Mit einem Klick war das auch sofort erledigt. Allerdings zerstören nun Umlaute das XML das heißt:
Wenn ich im Feld Spielername - "Käse" eingebe bekomme ich als XML nur noch
zurück.
Also habe ich einiges versucht und bin immer wieder darüber gestoplert das Encoding soll man ändern. (Das war auch das Resultat der Board-Suche)
Ich habe das Encoding sowohl im HTML-Header der index.php als auch in der action.php
index.php:
action.php:
Wie auch in den Konstruktoren von SimpleXML angepasst.
Als das ganze nicht fruchtete habe ich versucht die Umlaute zu escapen:
Das führt allerdings nicht dazu, das dann dort im XML ein HMTL-Escape für den Umlaut auftaucht, sondern der value einfach gelöscht wird.
Ich hoffe mir kann jemand helfen.
Vielen Dank,
Tobias
ich bin derzeit damit beschäftigt eine Anmeldung für ein (Rollenspiel) Event zu erstellen.
Die Daten sollen anschließend in ein XML Verpackt werden, das wir diese weiter aufarbeiten können.
Dazu nutze ich unter anderem folgende Funktion:
PHP-Code:
function WerteStammdatenAus()
{
$spielerXml = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?><Spieler></Spieler>');
$charaXml = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?><Charakter></Charakter>');
foreach($_POST as $k=>$v)
{
if(strpos($k,"Spieler")!==false)
{
if ( $v == "")
$v = " ";
$spielerXml->addChild(str_replace("Spieler", "",$k), $v);
}
if(strpos($k,"Chara")!==false)
{
if ( $v == "")
$v = " ";
$charaXml->addChild(str_replace("Chara", "",$k), $v);
}
}
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?>'.'<Stammdaten></Stammdaten>');
echo $spielerXml;
sxml_append($xml, $spielerXml);
sxml_append($xml, $charaXml);
return $xml->asXML();
}
Mit einem Klick war das auch sofort erledigt. Allerdings zerstören nun Umlaute das XML das heißt:
Wenn ich im Feld Spielername - "Käse" eingebe bekomme ich als XML nur noch
Code:
<?xml version="1.0" encoding="ISO-8859-1"?> <Stammdaten><Spieler><vorname>K
Also habe ich einiges versucht und bin immer wieder darüber gestoplert das Encoding soll man ändern. (Das war auch das Resultat der Board-Suche)
Ich habe das Encoding sowohl im HTML-Header der index.php als auch in der action.php
index.php:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Charaktererstellung für's HOEX 2</title> <link rel="stylesheet" type="text/css" href="css/style.css"> ...
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Charaktererstellung für's HOEX 3</title> <link rel="stylesheet" type="text/css" href="css/style.css"> <script type="text/javascript" src="js/html5.js"></script>
Als das ganze nicht fruchtete habe ich versucht die Umlaute zu escapen:
PHP-Code:
function WerteStammdatenAus()
{
$spielerXml = new SimpleXMLElement('<Spieler></Spieler>');
$charaXml = new SimpleXMLElement('<Charakter></Charakter>');
foreach($_POST as $k=>$v)
{
if(strpos($k,"Spieler")!==false)
{
if ( $v == "")
$v = " ";
$spielerXml->addChild(str_replace("Spieler", "",$k), htmlentities( $v));
}
if(strpos($k,"Chara")!==false)
{
if ( $v == "")
$v = " ";
$charaXml->addChild(str_replace("Chara", "",$k), htmlentities($v));
}
}
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?>'.'<Stammdaten></Stammdaten>');
sxml_append($xml, $spielerXml);
sxml_append($xml, $charaXml);
return $xml->asXML();
}
Ich hoffe mir kann jemand helfen.
Vielen Dank,
Tobias
Kommentar