HTML-Entity Nummer und Dezimal-Code?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgabe
auslese
browser
code
codierung
datei
ergebnis
erkennen
funktion
header
jagen
klartext
nummer
paste
sonderzeichen
string
url
viereck
zeichen
-
Hallo
wie komme ich von einer HTML-Entity Nummer zum Dezimal-Code?
BSP: wie komme ich von
auf 128 ??€
mit
bekomme ich als Ergebnis: 128echo ord('€');
ok, denn mit
bekomme ich wieder €echo chr(128);
ABER
wenn ich das Zeichen nicht im "Klartext" als € vorliegen habe,
sondern nur als€
wie komme ich davon auf den Dezimal-Wert ???
gibt es eine PHP Funktion, die mir zur HTML-Entity Nummer
den Dezimal-Wert ausgibt?€
oder über Umweg, aus
den "klartext" ASCII, den ich dann wieder durch ord() jagen kann ?!€
Beitrag zuletzt geändert: 27.4.2012 14:18:10 von oindex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
oindex schrieb:
Vergiss nicht:
Hallo
wie komme ich von einer HTML-Entity Nummer zum Dezimal-Code?
BSP: wie komme ich von
auf 128 ??€
mit
bekomme ich als Ergebnis: 128echo ord('?');
ok, denn mit
bekomme ich wieder ?echo chr(128);
ABER
wenn ich das Zeichen nicht im "Klartext" als ? vorliegen habe,
sondern nur als€
wie komme ich davon auf den Dezimal-Wert ???
gibt es eine PHP Funktion, die mir zur HTML-Entity Nummer
den Dezimal-Wert ausgibt?€
oder über Umweg, aus
den "klartext" ASCII, den ich dann wieder durch ord() jagen kann ?!€
.&#dezimalwert;
Dabei musst du aber beachten, dass
Unicode ist, wo hingegen 128 der einfache ASCII-Wert ist.€
-
hmm, ok
aber warum geht dann das:
$mapping = array(); $i=0; foreach (get_html_translation_table(HTML_ENTITIES, ENT_QUOTES) as $char => $entity){ $mapping[$i]['entity'] = $entity; $mapping[$i]['char'] = $char; $mapping[$i]['code'] = '&#' . ord($char) . ';'; $i++; } print "<pre>\n"; print_r($mapping); print "</pre>\n";
Problem ist, das get_html_translation_table ... für Einsatz von htmlentities()
nicht wirklich Alle Sonderzeichen enthält
ich habe eine Liste zusätzlicher Sonderzeichen, die nicht in htmlentities() berücksichtigt werden
allerdings nur mit diesem &# Code und als Entities, und bestimmt auch nicht komplett
Array ( ['] => ' [−] => − [ˆ] => ˆ [˜] => ˜ [Š] => Š [‹] => ‹ [Œ] => Œ [‘] => ‘ [’] => ’ [“] => “ [”] => ” [•] => • [–] => – [—] => — [™] => ™ [š] => š [›] => › [œ] => œ [Ÿ] => Ÿ [ƒ] => ƒ [Α] => Α [Β] => Β [Γ] => Γ [Δ] => Δ [Ε] => Ε [Ζ] => Ζ [Η] => Η [Θ] => Θ [Ι] => Ι [Κ] => Κ [Λ] => Λ [Μ] => Μ [Ν] => Ν [Ξ] => Ξ [Ο] => Ο [Π] => Π [Ρ] => Ρ [Σ] => Σ [Τ] => Τ [Υ] => Υ [Φ] => Φ [Χ] => Χ [Ψ] => Ψ [Ω] => Ω [α] => α [β] => β [γ] => γ [δ] => δ [ε] => ε [ζ] => ζ [η] => η [θ] => θ [ι] => ι [κ] => κ [λ] => λ [μ] => μ [ν] => ν [ξ] => ξ [ο] => ο [π] => π [ρ] => ρ [ς] => ς [σ] => σ [τ] => τ [υ] => υ [φ] => φ [χ] => χ [ψ] => ψ [ω] => ω [ϑ] => ϑ [ϒ] => ϒ [ϖ] => ϖ [ ] =>   [ ] =>   [ ] =>   [‌] => ‌ [‍] => ‍ [‎] => ‎ [‏] => ‏ [‚] => ‚ [„] => „ [†] => † [‡] => ‡ […] => … [‰] => ‰ [′] => ′ [″] => ″ [‾] => ‾ [⁄] => ⁄ [€] => € [ℑ] => ℑ [℘] => ℘ [ℜ] => ℜ [ℵ] => ℵ [←] => ← [↑] => ↑ [→] => → [↓] => ↓ [↔] => ↔ [↵] => ↵ [⇐] => ⇐ [⇑] => ⇑ [⇒] => ⇒ [⇓] => ⇓ [⇔] => ⇔ [∀] => ∀ [∂] => ∂ [∃] => ∃ [∅] => ∅ [∇] => ∇ [∈] => ∈ [∉] => ∉ [∋] => ∋ [∏] => ∏ [∑] => ∑ [∗] => ∗ [√] => √ [∝] => ∝ [∞] => ∞ [∠] => ∠ [∧] => ∧ [∨] => ∨ [∩] => ∩ [∪] => ∪ [∫] => ∫ [∴] => ∴ [∼] => ∼ [≅] => ≅ [≈] => ≈ [≠] => ≠ [≡] => ≡ [≤] => ≤ [≥] => ≥ [⊂] => ⊂ [⊃] => ⊃ [⊄] => ⊄ [⊆] => ⊆ [⊇] => ⊇ [⊕] => ⊕ [⊗] => ⊗ [⊥] => ⊥ [⋅] => ⋅ [⌈] => ⌈ [⌉] => ⌉ [⌊] => ⌊ [⌋] => ⌋ [〈] => ⟨ [〉] => ⟩ [◊] => ◊ [♠] => ♠ [♣] => ♣ [♥] => ♥ [♦] => ♦ )
wenn aber in einem String dann eines der Zeichen im "Klartext" vorkommt, wie das EURO-Zeichen €
kann ich es damit nicht erkennen und zu Entity (oder Unicode &#) umwandeln
Auch die Browser-Ausgabe per Copy+Paste in eine .txt Datei geht nicht bei allen Zeichen
selbst mit Notepad++ und UTF-8 (mit oder ohne BOM) kommen nicht alle Zeichen an
viele bleiben ? oder so ein nichts-sagendes Viereck .... also kann ich diese dann nicht
in einem String "erkennen" ... mit Array vergleichen (mit file() aus .txt je Zeile ein Zeichen)
die Frage ist, wie bekomme ich saubere Ausgabe (sowohl in ISO-8859-1 als auch in UTF8)
von möglichst allen Sonderzeichen? ... meie Idee war halt Entities bzw. &# Codierung ... ?!
-
oindex schrieb:
Vergiss die Zeichenübersetzung und verwend einfach UTF-8. Dabei musst du aber per HTTP-Header die Zeichenkodierung mitschicken und dem Browser so mitteilen, dass es sich um UTF-8 handelt, ansonsten bekommst du die beschriebenen Fehler.
Auch die Browser-Ausgabe per Copy+Paste in eine .txt Datei geht nicht bei allen Zeichen
selbst mit Notepad++ und UTF-8 (mit oder ohne BOM) kommen nicht alle Zeichen an
viele bleiben ? oder so ein nichts-sagendes Viereck .... also kann ich diese dann nicht
in einem String "erkennen" ... mit Array vergleichen (mit file() aus .txt je Zeile ein Zeichen)
die Frage ist, wie bekomme ich saubere Ausgabe (sowohl in ISO-8859-1 als auch in UTF8)
von möglichst allen Sonderzeichen? ... meie Idee war halt Entities bzw. &# Codierung ... ?! -
ja, wenn möglich, dann würde ich gerne direkt als UFT-8 ausgeben
aber ich bekomme als String (nach Auslesen einer Datei) auch nicht codierte Sonderzeichen rein,
und diese will ich "erkennen" und dann codieren, damit in Ausgabe dieser Sonderzeichen
auch richtig dargestellt wird, und nicht als ? oder Viereck
leider funktioniert utf8_encode() nicht für alle Sonderzeichen
also brauche ich eine andere Methode um auch diese "lesbar" (in UTF-8) augeben zu können
Beispiel: in dem String soll eigentlich ein langer Gedankenstrich stehen
wenn ich mir die dazugehörige XML Datei (Quelltext) ansehe, oder diesen ausgebe
dann sehe ich anstatt dem Gedankenstrich nur ein ?
... ich schätze mal, die Codierung ist schon beim Erstellen der XML-Datei "schief gegangen"
und ich habe da keine Chance aus dem ? wieder einen Gedankenstrich zu machen
-
oindex schrieb:
Erklär mal warum das nicht funktioniert....
ja, wenn möglich, dann würde ich gerne direkt als UFT-8 ausgeben
aber ich bekomme als String (nach Auslesen einer Datei) auch nicht codierte Sonderzeichen rein,
und diese will ich "erkennen" und dann codieren, damit in Ausgabe dieser Sonderzeichen
auch richtig dargestellt wird, und nicht als ? oder Viereck
leider funktioniert utf8_encode() nicht für alle Sonderzeichen
also brauche ich eine andere Methode um auch diese "lesbar" (in UTF-8) augeben zu können
Schau dir mal folgendes Beispiel an:
Natürlich gibt das nur das aus was in der Datei "datei.txt" drinnen steht, wenn dort schon<?php $content = file_get_contents('datei.txt'); header('Content-Type: text/plain; charset=utf-8'); echo(utf8_encode($content)); ?>
drinnen stehen kommen auch nur die raus und keine anderen Zeichen.?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage