Flo: Euro convert

Hi!
folgendes Problem:

ich schreibe über ein formular einen text in eine DB. in dem Text kommen Euro-Zeichen vor.
vor dem reinschreiben wende ich diese Funktion an:

function euro($string) {
  global $str_new;
  $str_new = str_replace("","€",$string);
  return $str_new;
}

klappt aber nicht! Warum?

vielen Dank für die Mühe

  1. Hi,

    klappt aber nicht! Warum?

    weil die Zeichen "&", "e", "u", "r", "o" und ";" nicht hintereinander in dem String vorkommen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. aber das eurozeichen kommt doch vor, das ist nur ein zeichen und dies soll durch € ersetzt werden.
      warum geht das so nicht?

    2. Hallo,

      weil die Zeichen "&", "e", "u", "r", "o" und ";" nicht hintereinander in dem String vorkommen.

      kann es sein, das Du Dich da vertust?

      Aus der Funktionsbeschreibung:

      string str_replace (string needle, string str, string haystack)

      In haystack (hier: $string) wird also nach needle (hier: mutmasslich ein von der Forumssoftware geschlucktes(?) EUR-Zeichen) gesucht, und dieses durch str (hier: "€") ersetzt.

      Die Argumente wären damit schonmal in der richtigen Reihenfolge...

      Gruß

      Henk

      1. Hi,

        kann es sein, das Du Dich da vertust?

        ja, offenbar.

        In haystack (hier: $string) wird also nach needle (hier: mutmasslich ein von der Forumssoftware geschlucktes(?) EUR-Zeichen) gesucht,

        Wenn es nicht geschluckt wurde, würde ein Leerstring ersetzt werden, was vermutlich undefiniert ist. Wenn nicht, ist die Problembeschreibung unvollkommen.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. so hab ich es ja, aber es klappt nicht. In der DB steht dann nur ein ?

        1. Hallo Flo,

          Dein Problem wird wohl in irgendeiner Form mit der Zeichenkodierung zusammenhängen.

          Lass Dir mal die Strings, mit denen Du arbeitest, ausgeben, vielleicht hilft Dir das schon weiter.

          Wenn nicht, lass die DB raus, arbeite nur mit den Strings innerhalb eines PHP-Skriptes. wenn es dann läuft, such mal im DBServer-Manual nach Dingen wie Client-Server-Kommunikation und vor allem den dabei verwendeten Zeichensätzen (charsets).

          Das Problem ist, das das EUR-Zeichen nicht zum Standard-ASCII-Zeichensatz gehört, sondern oberhalb von 128 Bit liegt. Und da wird's dann schnell kniffelig, wenn unterschiedliche Zeichensätze ins Spiel kommen.

          Vielleicht kann Dir ja jemand konkret zu Deinem Problem etwas sagen...

          Gruß

          Henk

          1. ok danke erstmal!!!

  2. Hello,

    ich schreibe über ein formular einen text in eine DB. in dem Text kommen Euro-Zeichen vor.
    vor dem reinschreiben wende ich diese Funktion an:

    function euro($string) {
      global $str_new;
      $str_new = str_replace("","€",$string);
      return $str_new;
    }

    klappt aber nicht! Warum?

    Warum ersetzt Du einen Leerstring durch '€' ?
    Wofür ist das global $str_new da, wenn die Funktion das doch ordnungsgemäß als Rückgabewert liefert?

    Und wenn Du tatsächlich mal nur '€' in deine Tebelle insert-est, was steht dann nach dem Select im Result?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen