kostenloser Webspace werbefrei: lima-city


Eurozeichen und Zeichensatzproblem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m*******t

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wie wärs mit

    echo htmlentities('€');
  4. Autor dieses Themas

    m*******t

    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
  5. htmlentities sollte normalerweise € durch € ersetzen. Keine Ahnung, warum das nicht geht.
  6. Autor dieses Themas

    m*******t

    ja, also bei mir macht er das leider nicht, warum weiß ich auch nicht.
    Muss man vllt die Zeichkodierung anders einstellen?

    gruss
  7. 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(
            '€' => '&euro;'
      );
    
      // 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
  8. Autor dieses Themas

    m*******t

    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
  9. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    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
  10. Autor dieses Themas

    m*******t

    Nein, sry, bringt auch nix.

    gruss
  11. In welchem Zeichensatz sind denn deine PHP Scripte abgespeichert? ...könntest du evtl. mal Quellcode zum Download zur Verfügung stellen?

    Grüßle
  12. Autor dieses Themas

    m*******t

    hier mal der Code:
    <?php
    $list   = utf8_encode($_POST['list']);
    $submit = $_POST['submit'];
    
    
    $ersetzungen = array(
    
    	'€' => '&euro;', 'ü' => '&uuml;', 'ö' => '&ouml;', 'ä' => '&auml;'
    
    );
    
    
    // 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
  13. 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
  14. Autor dieses Themas

    m*******t

    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
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!