php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-01-2007, 13:07
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard XML Absätze, Sonderzeichen & Co.

Hi,
ich benutzte simple XML, allerdings hab ich Schwierigkeiten
mit Sonderzeichen und Absätzen, denn wenn ich per
Formularfeld Daten eingebe mit äöü dann gibt er mir zig
Fehlermeldungen aus, und die DB kracht komplett zusammen,
und dann wäre noch das Problem mit Absätzen, wenn ich
im Textfeld/Formularfeld Absätze mache, dann beachtet
er mir bei der Ausgabe der Datenbank diese nicht und
schreibt alles in eine Zeile :/

Wie kann ich das Problem beheben?

Teilcode zum Einlesen und Schreiben meiner XML:
PHP-Code:
$xml_path_text $_root_doc_dir."db/flash_subnavi_text.xml";
$xml_text simplexml_load_file($xml_path_text);
$xml_text->addChild($getSubSection);

$xmlData_text $xml_text->$getSubSection->addChild("text");
$xmlData_text->addAttribute('name',$tmp_getEintrag));
$xmlData_text->addAttribute('url',$getEintrag);
$xmlData_text->addAttribute('text',$_POST['myText']));
        
write_file($xml_text->asXML(),$xml_path_text); 
mfg & thx darki

Geändert von darki777 (31-01-2007 um 13:11 Uhr)
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 31-01-2007, 13:16
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: XML Absätze, Sonderzeichen & Co.

Zitat:
Original geschrieben von darki777
ich benutzte simple XML, allerdings hab ich Schwierigkeiten
mit Sonderzeichen und Absätzen, denn wenn ich per
Formularfeld Daten eingebe mit äöü dann gibt er mir zig
Fehlermeldungen aus, und die DB kracht komplett zusammen,
Dann mache dir Gedanken über die Zeichenkodierung.

UTF-8 wäre zu empfehlen.
Zitat:
und dann wäre noch das Problem mit Absätzen, wenn ich
im Textfeld/Formularfeld Absätze mache, dann beachtet
er mir bei der Ausgabe der Datenbank diese nicht und
schreibt alles in eine Zeile :/
Ausgabe als was - als HTML?

Dass dabei Zeilenumbruchzeichen keinen sichtbaren Zeilenumbruch erzeugen, sollte doch wohl klar sein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 31-01-2007, 13:35
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich hab utf8, auch die funktionen utf8_decode() und utf8_encode()
kamen zum Einsatz, hab mir auch extra ne etwas längere Funktion
hierzu geschrieben, allerdings kracht die DB trotzdem jedesmal
zusammen, und langsam gehn mir die Ideen aus wieso das so ist.
Denn wenn ich Sonderzeichen manuell in die DB eintrage, dann
klappt das ja sogar wunderbar, aber wenn ich es durch simpleXML
mach, dann kodiert der mir das irgendwie um, ich glaub es liegt am
Abspeichern, wenn ich asXML() verwende, was anderes fällt mir echt
nicht mehr ein.


Zu den Absätzen, (ja als html)
deswegen frag ich wie ich das lösen kann?
Muss ich die Absätze irgendwie seperat kodiern und dann wieder
enkodiern? Oder wie ist das? Hab das nun notfalls mit nem <pre>
Tag gelöst, klappt auch gut, allerdings wüsste ich gerne eine
reguläre Möglichkeit das zu lösen.

mfg & thx darki

Geändert von darki777 (31-01-2007 um 13:37 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 31-01-2007, 14:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von darki777
Ich hab utf8, auch die funktionen utf8_decode() und utf8_encode()
kamen zum Einsatz,
Wozu?
Wenn du konsequent mit UTF-8 arbeitest, dann gibt es doch nicht ständig was zu de- und enkodieren.
Zitat:
allerdings kracht die DB trotzdem jedesmal zusammen
Abgesehen davon, dass das als Problembeschreibung nichts taugt, bezweifle ich auch, dass dem wirklich so ist.
Zitat:
Denn wenn ich Sonderzeichen manuell in die DB eintrage, dann
klappt das ja sogar wunderbar, aber wenn ich es durch simpleXML
mach, dann kodiert der mir das irgendwie um, ich glaub es liegt am
Abspeichern, wenn ich asXML() verwende
Nicht "glauben" sondern nachprüfen, debuggen.

Und asXML gibt mir wunderbares UTF-8 aus, wenn ich auch im XMl-Prolog angebe, dass ich UTF-8 verwenden möchte.
(Ohne das kodiert es Sonderzeichen allerdings in der nummerischen Notation. Aber selbst damit dürfte es ja keine Probleme beim anschliessenden Interpretieren als UTF-8 geben.)

Zitat:
Zu den Absätzen, (ja als html)
deswegen frag ich wie ich das lösen kann?
So, wie es die ca. 5.373 Noobs, die vor dir schon hier deswegen gefragt haben, auch gelöst haben.
Zitat:
Muss ich die Absätze irgendwie seperat kodiern und dann wieder
enkodiern? Oder wie ist das?
Weil das gar kein so ausserordentlich ungewöhnlicher Anwendungsfall ist, könnte es ja vielleicht schon eine fertige Funktion dafür geben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 31-01-2007, 19:18
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann ja mal passiern, das mit den Absätzen hab ich im manual zuerst
nicht gefunden gehabt, und die Funktion hab ich zuvor nie gebraucht.

Und wegs den Sonderzeichen, wenn ich nicht manuell
kodiere/dekodiere und probehalber mal ein öäü
eingebe, dann kommt nur das hier raus:


Warning: simplexml_load_file() [function.simplexml-load-file]: /is/htdocs/wp1054544_HFLZC18U4C/www.*******//db/flash_subnavi_text.xml:5: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE4 0xE4 0x22 0x20 in /is/htdocs/wp1054544_HFLZC18U4C/www.******/inc/get_subnavi_bauten_text.inc.php on line 14


Und genau ab diesem Fehler geht dann gar nix mehr,
die Fehlermeldungen laufen dann ins unendliche. Was meinst du
mit XMl-Prolog?

mfg & thx darki
Mit Zitat antworten
  #6 (permalink)  
Alt 31-01-2007, 19:25
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von darki777
Und wegs den Sonderzeichen, wenn ich nicht manuell
kodiere/dekodiere und probehalber mal ein öäü
eingebe, dann kommt nur das hier raus:

Warning: simplexml_load_file() [function.simplexml-load-file]: /is/htdocs/wp1054544_HFLZC18U4C/www.*******//db/flash_subnavi_text.xml:5: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE4 0xE4 0x22 0x20 in ...
Na also, da steht doch alles was du wissen musst.

Du lieferst kein UTF-8 - also ändere das entweder, oder gebe an, welche Kodierung du verwendest.
Zitat:
Was meinst du mit XMl-Prolog?
Auch dazu hast du also mal wieder nichts finden können ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 31-01-2007, 20:24
zerni
 Member
Links : Onlinestatus : zerni ist offline
Registriert seit: Oct 2006
Beiträge: 268
zerni ist zur Zeit noch ein unbeschriebenes Blatt
Standard

um es als HTML auszugeben:
PHP-Code:
echo nl2br($string); 
Mit Zitat antworten
  #8 (permalink)  
Alt 31-01-2007, 22:59
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

XMI-Prolog hab ich mal bei php.net gesucht,
allerdings gehts mir nicht darum, und dass ich
keinen UTF8 konformen String übergebe weis ich
auch, allerdings wenn ich es als utf8 decode dann
hab ich anderweitige Probleme mit dem encoden
von den sonderzeichen, aber du sagtest selbst
ein decoden/encoden/etc. würde gar nicht erst nötig sein,
irgendwie wiedersprichst du dir selbst.

@zerni, thx, hatte die funktion aber schon gefunden gehabt

mfg darki

Geändert von darki777 (31-01-2007 um 23:01 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 01-02-2007, 02:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von darki777
und dass ich keinen UTF8 konformen String übergebe weis ich auch,
Warum änderst du dann nichts daran?
Zitat:
allerdings wenn ich es als utf8 decode dann
hab ich anderweitige Probleme mit dem encoden
von den sonderzeichen,
Nicht-UTF-8 wird durch dekoden ja auch sicherlich nicht zu UTF-8 ...
Zitat:
aber du sagtest selbst ein decoden/encoden/etc. würde gar nicht erst nötig sein,
Richtig, wenn du gleich konsequent UTF-8 verwendest.
Zitat:
irgendwie wiedersprichst du dir selbst.
Lustig, dass du jetzt derjenige bist, der das sagt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #10 (permalink)  
Alt 01-02-2007, 12:09
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du hättest mir auch sagen könn welche Funktion von nöten
wäre, ich lese mich eh gern selbst durch um es zu kapieren

Habs nun mit htmlentities() gemacht, bzw. die Strings so zu
kodieren, und klappt auch alles wunderbar, hoffe das ist auch
das was du gemeint hattest.

Danke für die Geduld, mfg darki
Mit Zitat antworten
  #11 (permalink)  
Alt 01-02-2007, 14:04
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Das ist natürlich nicht das, was ich gemeint habe.

Wozu unnötigerweise Sonderzeichen in HTML-Entities umschreiben - wenn es eine einfache Verwendung einer passenden Zeichenkodierung auch tut.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 14-03-2007, 19:34
INC.
 Registrierter Benutzer
Links : Onlinestatus : INC. ist offline
Registriert seit: Nov 2005
Beiträge: 106
INC. ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Um nicht unnötigerweise nen neuen Thread zu erstellen, benutz ich den mal weiter.

Habe ebenfalls Sonderzeichen im XML Dokument und trotz UTF-8 will SimpleXML da nicht mitmachen.

XML-Datei zum testen:

Code:
<?xml version = "1.0" encoding = "UTF-8"?>
<start>

    <bla zeichen = "bla ™"></bla>
            
</start>


Parserdatei:

PHP-Code:
<?php
$xml 
simplexml_load_file('test3.xml');
echo 
$xml->bla->attributes()->zeichen;
  
?>

So zb hier dieses Trademarkzeichen, ohne gehts Problemlos.

Oder muss man UTF-8 noch woanders angeben als nur im Header der XML Datei?

mfg


//edit: achja hier der Error, dort steht was von not-proper UTF-8, aber wo is der Fehler?

Zitat:
Warning: simplexml_load_file() [function.simplexml-load-file]: test3.xml:7: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0x99 0x22 0x3E 0x3C in /www/htdocs/w0080940/debugger2.php on line 2

Warning: simplexml_load_file() [function.simplexml-load-file]: <bla zeichen = "bla ™"></bla> in /www/htdocs/w0080940/debugger2.php on line 2

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /www/htdocs/w0080940/debugger2.php on line 2

Fatal error: Call to a member function attributes() on a non-object in /www/htdocs/w0080940/debugger2.php on line 5


Geändert von INC. (14-03-2007 um 19:40 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 14-03-2007, 20:06
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ist die xml-datei denn wirklich utf-8 kodiert?
Mit Zitat antworten
  #14 (permalink)  
Alt 14-03-2007, 20:16
INC.
 Registrierter Benutzer
Links : Onlinestatus : INC. ist offline
Registriert seit: Nov 2005
Beiträge: 106
INC. ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich dachte bisher immer, sie wäre es wenn dort "encoding UTF-8" steht

Dann wird das wohl nicht der Fall sein. Es handelt sich um eine externe PHP-Datei, welche mir als deren Quelltext (Rechtsklick -> Quelltext anzeigen) den XML-Output anzeigt.

wie nun am besten Vorgehen? Evt. mit file_get_contents den Quelltext (sprich die XML Daten) aus dem PHP File holen, lokal aufm Server abspeichern lassen und dort als UTF-8 codieren? Oder gibts da was eleganteres...


//edit: weitere Frage: die obige Beispieldatei hatte ich ja nur zum testen erstellt, der Fehler war jedoch der gleiche. Diese Datei habe ich dann mal mit dem Editor geöffnet und als UTF 8 wieder abgespeichert (zuvor war es ANSI). Jetzt erzeugt SimpleXML keinen Fehler mehr, jedoch lautet die Ausgabe nun "â„¢" statt dem Trademark zeichen.

Geändert von INC. (14-03-2007 um 20:19 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 14-03-2007, 20:24
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielleicht solltest du dich darüber informieren, was eine kodierung überhaupt ist.

wieso externe datei? ich sehe in deinem beispiel, wie du 'test3.xml' anforderst. das ist eine lokale datei im dateisystem deines servers. wie kommt sie dahin?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:55 Uhr.