Zurück   klamm-Forum > klamm-Lose > Lose4Scripts > Lose4Scripts (erledigt)

 
 
LinkBack Themen-Optionen Ansicht
Alt 04.05.2009, 18:41:33   #1 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard geschafft, danke

Hallo,

ich habe folgendes Problem: Ich lese mit simplexml_load_file einen xml-Datei aus und erhalten dabei zum Beispiel dann folgende Ausgabe:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
SimpleXMLElement Object 

[
bluberer] => SimpleXMLElement Object 

[
name] => test 
[version] => 2.5 
[beschreibung] => Das ist ein neuer Test... 
[
isa] => 
[isb] => 


[
bluber] => Array 

[
0] => SimpleXMLElement Object 

[
name] => install_test 
[beschreibung] => das sit der Installtest...mit einem Ã¼ und einem Ã¤ 
[infos] => Ich bin auch mit Ã¶ und Ã¼ schön
[
data] => asdfas dfasd f 


[
1] => SimpleXMLElement Object 

[
name] => neuertemplatekomptest 
[beschreibung] => SimpleXMLElement Object 



[
infos] => asöjlasöflj 
[data] => asdfasdfd d 


[
2] => SimpleXMLElement Object 

[
name] => Test mit Ã¼ und Ã¶ 
[beschreibung] => das sit der Installtest...mit einem Ã¼ und einem Ã¤ 
[infos] => Mit Ã¶ oder Ã¼ ist es toll
[
data] => Template mit Ã¼ oder Ã¶ 


[
3] => SimpleXMLElement Object 

[
name] => update_test 
[beschreibung] => der update-test 
[infos] => SimpleXMLElement Object 



[
data] => Das ist jetzt der update-Test 




[
blub] => SimpleXMLElement Object 

[
name] => Neuer Name 
[name_link] => name_neu 
[beschreibung] => Das ist das tolle Feld... 
[
feldart] => 
[v1] => dsadf 
[v2] => asdf 
[v3] => asdf 
[v4] => das 
[v5] => sadf 



Also ne Kombi aus Objekten und Arrays.

Das Problem ist allerdings, dass dort die Codierung utf8 ist und ich das in iso bräuchte. Das heißt also es müssen durch utf8_decode ja gehen. Aber genau das geht ja dort nicht so einfach.
Also die Endausgabe sollte wieder die sein:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
SimpleXMLElement Object 

[
bluberer] => SimpleXMLElement Object 

[
name] => test 
[version] => 2.5 
[beschreibung] => Das ist ein neuer Test... 
[
isa] => 
[isb] => 


[
bluber] => Array 

[
0] => SimpleXMLElement Object 

[
name] => install_test 
[beschreibung] => das sit der Installtest...mit einem ä und einem ö 
[infos] => Ich bin auch mit ü und ä schön
[
data] => asdfas dfasd f 


[
1] => SimpleXMLElement Object 

[
name] => neuertemplatekomptest 
[beschreibung] => SimpleXMLElement Object 



[
infos] => asäjlasü
[data] => asdfasdfd d 


[
2] => SimpleXMLElement Object 

[
name] => Test mit ä und ü 
[beschreibung] => das sit der Installtest...mit einem ü und einem ä
[infos] => Mit ä oder ü ist es toll
[
data] => Template mit ü oder ä 


[
3] => SimpleXMLElement Object 

[
name] => update_test 
[beschreibung] => der update-test 
[infos] => SimpleXMLElement Object 



[
data] => Das ist jetzt der update-Test 




[
blub] => SimpleXMLElement Object 

[
name] => Neuer Name 
[name_link] => name_neu 
[beschreibung] => Das ist das tolle Feld... 
[
feldart] => 
[v1] => dsadf 
[v2] => asdf 
[v3] => asdf 
[v4] => das 
[v5] => sadf 



Also hier sind jetzt also alle Werte durch utf8_decode gegangen.

Die Aufgabe besteht darin, dass ne rekursive Funktion erstellt werden muss, die durch alle Werte geht und jeden Wert durch utf8_decode zieht. Am Ende muss dann auch die Struktur mit Objekten und Arrays aber wieder vorhanden sein.

Einige Versuchen waren schon:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function object_utf8_decode($obj){
  if(
is_string($obj)){
    return 
utf8_decode($obj);
  }elseif(
is_object($obj)){
    foreach(
$obj as $key=>$value){
      
$obj->$key object_utf8_decode($value);
    }
  }elseif(
is_array($obj)){
    foreach(
$obj as $key=>$value){
      
$obj[$key] = object_utf8_decode($value);
    }
  }
  return 
$obj;

Aber damit gehts leider auch nicht.

Deswegen hoffe ich jetzt, dass einer von euch helfen kann.

Also, wer kann helfen? Gibt natürlich Lose für....

PS.: Bitte keine Diskussionen, dass man doch auch die Seitencodierung ändern könnte oder so, denn das wurde schon zig mal überprüft und in diesem Zusammenhang muss es so gelöst werden.
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..

Geändert von BartTheDevil89 (06.05.2009 um 19:14:29 Uhr)
BartTheDevil89 ist offline  
Alt 04.05.2009, 22:24:41   #2 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Wo sind denn alle PHP-Freaks?...
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
Alt 05.05.2009, 12:52:17   #3 (permalink)
XHTML|PHP|SQL|C

ID: 227795
Lose-Remote

Reg: 19.09.2006
Beiträge: 985
Standard

Sicher das du nicht simplexml_load_file meinst?

Das schon ausprobiert?
http://www.tutorials.de/forum/php/24...ml#post1299294

XML; UTF8 => ISO:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
<?php
function toISO($arTranslationtable)
{
    
//loop through the array and convert everything both keys and values
    
foreach($arTranslationtable as $charkey => $char)
    {
        
$charkey utf8_decode($charkey);
        
$arUTFchars[$charkey]= utf8_decode($char);
    }
     return 
$arUTFchars;
}

//get the translation table
$arSpecialchar     get_html_translation_table(HTML_ENTITIES);

//call the function to convert to ISO
$arUTFchars toISO($arSpecialchar);
print_r($arUTFchars);
?>

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
function htmlentities_decode$string )
{
    
$trans get_html_translation_table(HTML_ENTITIESENT_QUOTES);
    
$trans array_flip($trans);
    return 
strtr($string$trans);
}

$xml simplexml_load_string(utf8_decode(htmlentities_decode(file_get_contents('xml')))); 

Das ist hier keine fertige Funktion, soll nur ein Denkanstoß sein.
 

Geändert von Darklord (05.05.2009 um 13:00:09 Uhr)
Darklord ist offline  
Alt 05.05.2009, 13:26:36   #4 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Hi,

ja logisch mein ich simplexml_load_file...sorry.

Aber mit den beiden Funktionen komm ich leider auch nicht weiter. Und geb ja eben auch durchaus Lose für ne funktionierende Funktion.
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
Alt 05.05.2009, 23:12:38   #5 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Keine Progger mehr hier?....
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
Alt 06.05.2009, 23:56:37   #6 (permalink)
Hüüüüäääh? :):)
Benutzerbild von tkiela

ID: 295523
Lose-Remote
Reallife

Reg: 25.08.2007
Beiträge: 635
Standard

Moin.
Selber zwar noch nicht benutzt, aber eben per Zufall drauf gestoßen:

http://de.php.net/xmlrpc_decode
http://de.php.net/xmlrpc_decode_request

Aber Achtung:
Diese Funktion ist EXPERIMENTELL. Das Verhalten, der Funktionsname und alles Andere, was hier dokumentiert ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien Sie gewarnt und verwenden Sie diese Funktion auf eigenes Risiko.
 
tkiela ist offline  
Alt 07.05.2009, 09:11:13   #7 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Hi,

ja das ist doch eher wie simplexml_load_file() nur eben ne andere Funktion für. Aber das ändert ja noch immer nichts darum, dass ich komplett alles durchlaufen möchte und es nachher wieder so haben möchte wie vorher.
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
Alt 07.05.2009, 12:18:18   #8 (permalink)
Hüüüüäääh? :):)
Benutzerbild von tkiela

ID: 295523
Lose-Remote
Reallife

Reg: 25.08.2007
Beiträge: 635
Standard

Und du hast auch das Charset bei http://de.php.net/xmlrpc_decode angegeben?
 
tkiela ist offline  
Alt 07.05.2009, 13:46:44   #9 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von tkiela Beitrag anzeigen
Und du hast auch das Charset bei http://de.php.net/xmlrpc_decode angegeben?
Sorry, ab könntest nochmal zeigen wie du das genau meinst?
Also zum Beispiel:

PHP-Code:
1:
2:
$xml simplexml_load_file("datei");
//und wie jetzt alles durch utf8_decode gehen lassen? 
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
Alt 08.05.2009, 19:22:40   #10 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Sind alle Progger ausgeflogen?
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
Alt 08.05.2009, 20:02:41   #11 (permalink)
Neuer Benutzer

ID: 132227
Lose-Remote

Reg: 05.05.2006
Beiträge: 23
Standard

$xml = simplexml_load_string(utf8_decode(file_get_contents($file)))
 
s65amg ist offline  
Alt 08.05.2009, 23:22:40   #12 (permalink)
Devilution Media
Benutzerbild von BartTheDevil89

ID: 87739
Lose-Remote

BartTheDevil89 eine Nachricht über ICQ schicken
Reg: 02.05.2006
Beiträge: 3.963
Standard

Zitat:
Zitat von s65amg Beitrag anzeigen
$xml = simplexml_load_string(utf8_decode(file_get_contents($file)))
Nee...erstens ist das Problem das simplexml_load_file() ja nach dem auslesen das ganze in utf8 ausgibt, also bringt das ändern vorher auch nix.
Und zweitens führt dein Code dazu:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 15: parser error : Opening and ending tag mismatch: infos............
Rabatt-Gutscheine-Kostenlos.de - Rabattgutscheine für diverse Onlineshops. Immer kostenlos..
BartTheDevil89 ist offline Threadstarter  
 

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
danke, geschafft BartTheDevil89 Lose4Scripts (erledigt) 15 24.01.2010 13:41:41
Bitte um Hilfe : Versetzung geschafft!? umweltpolizeisb Schule, Studium, Ausbildung 19 05.06.2008 15:40:58
Proviquest. Ich hab 80ct in 2 min geschafft. Exorz1st Suche Refs: andere 0 22.09.2007 16:21:49
[PHP] [Neues Problem] --> Geschafft : DL Geschwindigkeit mydoys.de Programmierung 17 11.05.2006 11:53:52


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35:42 Uhr.