Eurozeichen und Zeichensatzproblem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
array
basteln
code
codierung
datei
datum
einstellen
ersetzen
folgendes problem
list
machen
quellcode
richtige probleme
stellen
suchen
vorherigen codes
zeichen
zeichensatz
zweite zeichenkette
-
hi Leute,
ich habe folgendes Problem.
Ich habe ein textarea in dem ich Text mit Euros einfüge. Das ganze wird dann per POST an ein PHP-Script geschickt und unteranderem soll das Eurozeichen durch € ersetzt werden. Doch leider funktioniert das nicht so richtig,
Mein PHP-Code:
$list = preg_replace("/€/si", "€", $list);
Wie müsste man den Zeichensatz der HTML-Datei oder die PHP-Datei ändern damit das Eurozeichen durch € ersetzt wird.
Nach der Lösung suche ich schon seit einem Tag und habe schon allemöglichen Zeichensätze und PHP-Codes ausprobiert.
Ich hoffe einer von Euch weiß wies geht.
gruss -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ja schön, jetzt gibt er mit das aus:
€
sry, wenn das jetzt doof klingt, aber ich weiß nicht wie mir das jetzt weiterhelfen soll?
gruss -
ja, also bei mir macht er das leider nicht, warum weiß ich auch nicht.
Muss man vllt die Zeichkodierung anders einstellen?
gruss -
cookies schrieb: htmlentities sollte normalerweise € durch € ersetzen. Keine Ahnung, warum das nicht geht.
ja logisch weil in der Umwandlungstabelle für htmlentities kein Eurozeichen drin ist
siehe:
<? echo '<pre>'; var_dump(get_html_translation_table(HTML_ENTITIES)); echo '</pre>'; ?>
Demzufolge wird das Eurozeichen auch nicht ersetzt.
Man könnte höchstens genauso wie htmlentities das macht auch das Eurozeichen ersetzen lassen.
Das sieht dann so aus:
<? $z = 'kostet 546,36 €'; //$z = utf8_encode($z); // Test bei UTF-8 Zeichen entkommentieren $ersetzungen = array( '€' => '€' ); // UTF8-Zeichen hinzufügen $tmp = array_flip($ersetzungen); foreach($tmp as $key => $value) { $tmp[$key] = utf8_encode($value); } // UTF-8 Zeichen zum Ersetzungsarray hinzufügen $ersetzungen = array_merge($ersetzungen, array_flip($tmp)); $z = strtr($z, $ersetzungen); echo $z; ?>
Das Ersetzungsarray wird mit den UTF-8 Zeichen ergänzt, somit wäre es egal ob man mit UTF-8 Eurozeichen oder ISO Eurozeichen ankommt
In das Array kann man natürlich noch mehr Zeichen hinterlegen.
Grüßle
Beitrag zuletzt geändert: 22.4.2009 11:58:18 von scout -
Hi,
ich habs mal ausprobiert und ins Array noch weiter Ersetzungen hinzugefügt z.B. ü, ö, ä.
Diese Zeichen hat er ersetzt, aber das Eurozeichen nicht.
Die Daten kommen aus einem textarea, falls das was damit zu tun hat.
Hoffe jemand weiß eine Abänderung des vorherigen Codes oder einen anderen.
gruss -
hallo!
dann versuch mal nicht das €-zeichen also solchen zu ersetzten, sondern die entsprechende unicode-codierung "20AC" (ich habe das selbst nie getestet, wäre aber bei einem solchen problem mein weiterer lösungsansatz)
Beitrag zuletzt geändert: 22.4.2009 14:27:53 von sonok -
In welchem Zeichensatz sind denn deine PHP Scripte abgespeichert? ...könntest du evtl. mal Quellcode zum Download zur Verfügung stellen?
Grüßle -
hier mal der Code:
<?php $list = utf8_encode($_POST['list']); $submit = $_POST['submit']; $ersetzungen = array( '€' => '€', 'ü' => 'ü', 'ö' => 'ö', 'ä' => 'ä' ); // UTF8-Zeichen hinzufügen $tmp = array_flip($ersetzungen); foreach($tmp as $key => $value) { $tmp[$key] = utf8_encode($value); } // UTF-8 Zeichen zum Ersetzungsarray hinzufügen $ersetzungen = array_merge($ersetzungen, array_flip($tmp)); if (empty($submit)) { ?> <form method='post'> <div align='center'><textarea name='list' cols='100' rows='30'></textarea><br> <input type='submit' name='submit' value=' Daten auswerten '></div> </form> <?php } else { //$list = htmlentities($list); $list = strtr($list, $ersetzungen); $list = nl2br($list); echo $list; }
nicht wundern das der code keine sinn macht hier ist nur das wichitgste.
der code müsste eigentlich in UTF-8 abgespeichert sein.
Und wie schon gesagt ä, ü, ö ersetzt er ja nur das Eurozeichen nicht.
gruss -
Ich nehme mal an das die Zeichen schon als UTF-8 Zeichen von der Webseite kommen...
demnach brauchst du kein utf8_encode() zu machen.
Das utf8_encode() hab ich nur dahin geschrieben, weil ich nicht erst eine Seite basteln wollte die mir utf8 zurück gibt
In deinem Fall wird dadurch 2x utf8 kodiert.
Beispiel:
ISO = "Halölülä das kostet ja 7654 €"
UTF8 in ISO Zeichen dargestellt = "Halölülä das kostet ja 7654 €"
D.h. wenn du utf8 hast kommt effektiv die zweite Zeichenkette an, dann machst du ein utf8_encode() ...d.h. jedes Ã, ¶l, ¼ usw. wird nochmal in utf8 umgewandelt, also utf8 nochmal zu ""Halölülä das kostet ja 7654 €""
Erst danach kommt die Vergleichsfunktion die zum Bsp nach einem ü (ü) sucht, zwar auch findet, aber ringsherum sind lauter unerwünschte Zeichen.
Hoffe konnte es einigermaßen erklären und helfen...
Grüßle -
Soweit versteh ich das ja, aber auch wenn ich ISO-8859-15 nehme gibt er anstatt dem Eurozeichen das € aus.
Welche Zeichenkodierung müsste man den benutzen damit es funktioniert?
Außerdem auch wenn ich UTF-8 im Browser angebe, und das utf8_encode() aus dem Script entferne gibt er mir etwas falsches aus.
Oh man dieses Eurozeichen kann einem richtige Probleme bereiten.
Ich hoffe weiterhin auf eine Lösung.
gruss
Beitrag zuletzt geändert: 23.4.2009 14:14:14 von moonfight -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage