zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > Knowledge Base
Seite neu laden PHP, XHTML und Unicode

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 09.08.2004, 17:46
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.08.2004
Beiträge: 16
Eric befindet sich auf einem aufstrebenden Ast
Standard PHP, XHTML und Unicode

Hallo Leute,

wollte mal fragen, ob es einen PHP-Befehl gibt, der alle Sonderzeichen bzw. Umlaute eines Strings in Unicodes umwandelt und damit XML-konform macht.

Hoffe, könnt weiterhelfen.

Viele Grüße!
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 09.08.2004, 21:14
Benutzerbild von Pablo
4 8 15 16 23 42
XHTMLforum-Kenner
 
Registriert seit: 31.05.2004
Beiträge: 1.772
Pablo sorgt für eine eindrucksvolle AtmosphärePablo sorgt für eine eindrucksvolle Atmosphäre
Standard

Das nicht, aber du kannst dir mit der Funktion strtr etwas sehr schönes bauen:
Code:
function sonderzeichen($text) {
    $replace = array (
      "ä" => "ä",
      "ö" => "ö",
      "ü" => "ü",
      "Ä" => "Ä",
      "Ö" => "Ö",
      "Ü" => "Ü",
      "ß" => "ß"
);
$text = strtr($text,$replace);
Ich denke, dass erfüllt seinen Zweck. Wie man weitere Sonderzeichen hinzufügt ist, denke ich offensichtlich.

Pablo
__________________
Go Opera!
… oder Chrome. Auch cool.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 09.08.2004, 22:23
Benutzerbild von hemfrie
Administrator
XHTMLforum-Kenner
 
Registriert seit: 18.12.2003
Ort: Düsseldorf
Beiträge: 2.777
hemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannthemfrie ist jedem bekannt
Standard

ich würde mit der PHP-Methode ord() arbeiten. Damit kannst Du sämtliche Zeichen als ASCII-Wert zurückgeben lassen.

http://www.xhtmlforum.de/viewtopic.php?p=7218#7218

Schau Dir mal das Skript an, dass s.alcade unten gepostet hat. Das funktioniert echt super. Der Vorteil ist, dass man sich nicht um die Vollständigkeit der Replace-Liste kümmern muss.


hemfrie
Mit Zitat antworten
  #4 (permalink)  
Alt 09.08.2004, 23:01
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.08.2004
Beiträge: 16
Eric befindet sich auf einem aufstrebenden Ast
Standard Lösung!

nun, ich habe glaube ich eine sehr elegante Lösung gefunden:

kennt ihr die funktion rawurlencode?

Die macht aus allen Sonderzeichen automatisch einen HEX-Unicode:

ä -> rawurlencode -> %E4

und E4 ist gleich 228 Dezimal -> &.#228; ist ä

Man muss also einen String erst durch rawurlencode jagen und dann gucken, wo überall %XX steht und diese mittels regulärer Ausdrücke in HTML-Unicodes umwandeln. Eigentlich eine sehr simple Methode, nur merkwürdig, dass bisher niemand darauf gekommen ist *G*

Werd' mal ein Skript schreiben - wenn es wirklich funzt, veröffentliche ich es hier. Ich denke, das ist sehr nützlich, um valides XHTML zu schreiben!

Viele Grüße!
Mit Zitat antworten
  #5 (permalink)  
Alt 09.08.2004, 23:39
Benutzerbild von toscho
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich fürchte, hier herrscht ein wenig Begriffsverwirrung.
Unicode ist eine reine hexanumerische Zuordnung, keine Kodierung. Jedem Zeichen ist eine Zahl zugeordnet.

Es gibt diverse Möglichkeiten der Kodierung:
• UTF-8, UTF-16, UTF-32: hier kann man die Zeichen unmaskiert einfach so in den Quelltext schreiben. Strengstens empfohlen.
• ISO-x: Alle ISO-Kodierungen sind im Zeichenumfang beschränkte Untermengen des Unicode-Zeichenumfanges. Will man hier ein Zeichen verwenden, das nicht in der angegebenen Kodierung vorkommt, muß man es »maskieren«. Das Maskieren geht auf drei Arten: Als hexanumerische Zeichenreferenz (&#D6, als dezimale Zeichenreferenz (&#214 und als Entity (&ouml.

XML- und damit auch XHTML-Parser brauchen Entities nicht aufzulösen. Und manche tun es tatsächlich auch nicht. Deshalb empfiehlt es sich ganz und gar nicht, Entities zu verwenden.
Bei den Maskierungen werden dezimale Referenzen am besten unterstützt. Aber ich rate dringend dazu, gleich alles in UTF-8 zu schreiben, schon weil der Quelltext ohne Maskierungen deutlich lesbarer bleibt.

Das ist ein großes Thema, deshalb hier nur etwas Pflichtlektüre:
http://www.cs.tut.fi/~jkorpela/chars.html
http://let.imperia.org/howto/de/unicode/unicode.html
http://www.dodabo.de/charset/

Gruß
Thomas
Mit Zitat antworten
  #6 (permalink)  
Alt 10.08.2004, 00:00
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.08.2004
Beiträge: 16
Eric befindet sich auf einem aufstrebenden Ast
Standard

mit anderen Worten,

man muss gar keine Entities verwenden? Wie sieht es da mit Kompatibilität aus? Ich fühle mich irgendwie nicht wohl, einfach ein ä unmaskiert in den Quelltext zu schreiben - das tun doch die wenigsten? Große Seiten wie stern.de haben trotz XHTML-Layout noch immer HTML-Entities.

Also was nun? Überall schreiben die Leute, man müsste Entities verwenden!

Viele Grüße!
Mit Zitat antworten
  #7 (permalink)  
Alt 10.08.2004, 00:00
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 24.05.2004
Beiträge: 1.176
terrikay befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von toscho
:
• UTF-8, UTF-16, UTF-32: hier kann man die Zeichen unmaskiert einfach so in den Quelltext schreiben. Strengstens empfohlen.
Woran liegt es dann, dass mein Firefox auf Seiten, die UTF-8 codiert sind, Umlaute als Fragezeichen ausgibt?

Ist mir mehrfach bei Code-Beispielen von Dir aufgefallen, Thomas. Wenn ich die in den Editor kopiere und aufrufe, dann kommen Fragezeichen statt der Umlaute. Mit ISO-8859-1 hingegen passiert das nicht. Mit dem IE auch nicht. Opera müßte ich testen......
Mit Zitat antworten
  #8 (permalink)  
Alt 10.08.2004, 00:05
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.926
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Wenn ich keine Umlaute maskiere (&auml) und UTF-8 nutze, fällt meine Seite beim W3C-Validator durch. Was stimmt nun also?

Btw - die PHP-Funktion htmlentities() tut genau das - es maskiert alle Umlaute und Sonderzeichen automatisch um. Wozu das Rad mit einer eigenen Funktion erfinden?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #9 (permalink)  
Alt 10.08.2004, 00:07
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.08.2004
Beiträge: 16
Eric befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Btw - die PHP-Funktion htmlentities() tut genau das - es maskiert alle Umlaute und Sonderzeichen automatisch um. Wozu das Rad mit einer eigenen Funktion erfinden?
Toll - die Funktion maskiert die Umlaute und Sonderzeichen aber nicht in Unicode um, sondern "nur" in HTMLentities.
Daher ja meine Frage, was besser ist, ob Unicode oder HTMLentities.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 10.08.2004, 00:19
Benutzerbild von toscho
Perplexifikator
XHTMLforum-Kenner
 
Registriert seit: 22.05.2004
Ort: Halle/Saale
Beiträge: 1.565
toscho sorgt für eine eindrucksvolle Atmosphäretoscho sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von terrikay
Woran liegt es dann, dass mein Firefox auf Seiten, die UTF-8 codiert sind, Umlaute als Fragezeichen ausgibt?
Dann hast du das entsprechende Dokument offenbar nicht als UTF-8 abgespeichert. Dazu muß es eine Einstellmöglichkeit in deinem Editor geben. Wenn nicht, wirf ihn schnell weg. Was siehst du, wenn du den Quellcode meiner Webseite aufrufst?

Zitat:
Zitat von Adagio
Wenn ich keine Umlaute maskiere (&auml) und UTF-8 nutze, fällt meine Seite beim W3C-Validator durch.
Nur wenn du kein <meta> benutzt und den Quelltext über das Texteingabefeld validieren läßt oder dein Server falsch konfiguriert ist.

Zitat:
Zitat von Eric
Funktion maskiert die Umlaute und Sonderzeichen aber nicht in Unicode um
Zum letzten Mal: Unicode ist keine Kodierung.
Was ist daran nicht zu verstehen?

Gruß
Thomas
Mit Zitat antworten
Sponsored Links
Antwort

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09
PHP und XHTML 1.1! Martin88 (X)HTML 3 20.11.2006 18:21
Xhtml und PHP weightwatcher (X)HTML 11 22.03.2005 20:29
XHTML 1.1 valid, mit php include, aber *.html, geht das ? websitedesigner (X)HTML 9 06.12.2004 16:45
Frage bezüglich PHP und XHTML / UTF-8 Kn1bbl (X)HTML 1 15.11.2004 22:05


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:51 Uhr.