Gero: Jede Ziffer ersetzen durch Bild

Hallo,

ich möchte eine Zahl durch Bilder ersetzen.

z.B. so:

$zahl = 1234.99;

=> $zahl_bilder="<img src='1.gif'><img src='2.gif'> ......";

Wie mach' ich das? Reguläre Ausdrücke?

Grüße
 Gero

  1. Ahoi Gero,

    Wie mach' ich das? Reguläre Ausdrücke?

    am besten wirds wohl sein wenn du die Zahl als string betrachtest. den
    string dann z.B. mit split http://de2.php.net/manual/de/function.split.php
    und dieses array gehst du dann mit einer foreach-schleife durch

    MfG

    --
    Alle Angaben wie immer ohne Gewähr
    \     \           /    /              \    \          /     /
     \     \         /    /                \    \        /     /
      \     /´¯.l.¯\    /                  \   /´¯.l.¯\     /
      |    l   .l.  (¯ '\                   /' ¯)  .l.   1    |
      l    l   .l.   \   \                 /   /   .l.   1    1
      l    l´¯.l´¯.l  \  '|               |'  /  1.¯´1.¯´1    1
      \                                                       /
  2. Hallo Gero,

    $zahl = 1234.99;
    => $zahl_bilder="<img src='1.gif'><img src='2.gif'> ......";
    Wie mach' ich das?

    mit einem einfachen str_replace() z.B.:

    $von = array(1,2,3,4,5,6,7,8,9,0);  
    $nach = array('<img src="1.gif" alt="1">', '<img src="2.gif" alt="2">', [...], '<img src="  
    0\.gif" alt="0">');  
    $zahl_bilder = str_replace($von, $nach, $zahl);
    

    Grüße aus Nürnberg
    Tobias

    1. Hallo Tobias,

      $von = array(1,2,3,4,5,6,7,8,9,0);

      $nach = array('<img src="1.gif" alt="1">', '<img src="2.gif" alt="2">', [...], '<img src="
      0.gif" alt="0">');
      $zahl_bilder = str_replace($von, $nach, $zahl);

        
      So habe ich es schon versucht, es funktioniert aber leider nicht - es wird immer nur eine 0 zurückgegeben.  
        
      Gruß  
       Gero
      
      1. Hi Gero,

        So habe ich es schon versucht, es funktioniert aber leider nicht - es wird immer nur eine 0 zurückgegeben.

        Also ist PHP doch nicht so schlecht, wie es oft beredet wird :-) In Visual Basic oder so, wäre das AFAIK gegangen *g*

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Schon gewusst, dass Bugs und Feature Vorschläge für das CForum ins Entwicklerforum oder in den BugTracker von WWWTech gehören und nicht hier her?
        1. Hallo

          Also ist PHP doch nicht so schlecht, wie es oft beredet wird :-) In Visual Basic oder so, wäre das AFAIK gegangen *g*

          Nö. [1] *bg*

          Freundliche Grüße

          Vinzenz

          Es sei denn, Du weist dem Array den Datentyp Variant zu. Dann weißt Du aber auch, dass Du das willst. In ein Integer-Array einen String reinschreiben zu wollen, löst einen Laufzeitfehler aus.

          1. Hi Vinzenz,

            In Visual Basic oder so, wäre das AFAIK gegangen *g*

            Nö. [...] In ein Integer-Array einen String reinschreiben zu wollen, löst einen Laufzeitfehler aus.

            Na gut - ich bin nicht so der VB Freak ;-) Aber unser Informatiklehrer erzählte uns mal was, dass man einstellen könnte, ob VB die Typen selbständig erkennt und umwandelt oder nicht.

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
            Krieg ist Gottes Art, den Amerikanern Geographie beizubringen. (Häfft)
            1. Hallo Dennis,

              Nö. [...] In ein Integer-Array einen String reinschreiben zu wollen, löst einen Laufzeitfehler aus.

              Na gut - ich bin nicht so der VB Freak ;-)

              das bin ich auch nicht. Ich bin kein Freak :-)

              Aber unser Informatiklehrer erzählte uns mal was, dass man einstellen könnte, ob VB die Typen selbständig erkennt und umwandelt oder nicht.

              langsam, langsam. Du wirfst Äpfel und Birnen durcheinander.

              In vielen Fällen kann eine Konvertierung implizit erfolgen, so kannst Du z.B. mit dem Zeichenkettenverkettungsoperator eine Zahl und eine Zeichenkette verknüpfen. Das Resultat ist eine Zeichenkette, die Zahl wurde implizit zur Zeichenkette umgewandelt. Das ist übrigens in vielen anderen Programmiersprachen genauso und kein spezielles Feature von Basic oder gar Visual Basic.

              Das ist etwas anderes als einem Arrayelement eines Integer-Arrays eine Zeichenkette zuzuweisen. Bitte beachte, dass in Basic ein Array eine Datenstruktur ist, die Elemente _gleichen_ Datentyps zusammenfasst.

              Es gibt ganz speziell die Konvertierungsfunktionen, die eine explizite Typumwandlung durchführen, sofern machbar, z.B. CInt(), CDouble(), CStr(), ...

              Freundliche Grüße

              Vinzenz

              1. Hallo Vinzenz,

                Zeichenkettenverkettungsoperator

                Tolles Wort.
                Bringst du das nach drei Bier noch fehlerfrei über die Lippen?  ;-)

                So long,

                Martin

                1. Hi Martin,

                  Zeichenkettenverkettungsoperator

                  Tolles Wort.

                  *g*

                  Bringst du das nach drei Bier noch fehlerfrei über die Lippen?  ;-)

                  Ich komme schon nach zwei Bier in Schwierigkeiten :-)

                  Freundliche Grüße

                  Vinzenz

        2. echo $begrüßung;

          So habe ich es schon versucht, es funktioniert aber leider nicht - es wird immer nur eine 0 zurückgegeben.

          Also ist PHP doch nicht so schlecht, wie es oft beredet wird :-) In Visual Basic oder so, wäre das AFAIK gegangen *g*

          Der Fehler muss woanders liegen, denn ich bekomme das gewünschte Ergebnis auch mit einem float.
          Vielleicht ist PHP aussagewilliger, wenn das error_reporting auf E_ALL gestellt wird.

          Übrigens, ein strtr() ist hier noch etwas eleganter, da man sich hier ein Array spart.

          echo "$verabschiedung $name";

      2. Ahoi Gero,

        $von = array(1,2,3,4,5,6,7,8,9,0);

        $nach = array('<img src="1.gif" alt="1">', '<img src="2.gif" alt="2">', [...], '<img src="
        0.gif" alt="0">');
        $zahl_bilder = str_replace($von, $nach, $zahl);

          
        
        > So habe ich es schon versucht, es funktioniert aber leider nicht - es wird immer nur eine 0 zurückgegeben.  
          
        mach mal ein  
        var\_dump($zahl);  
        und evt.  
        $von = array("1","2","3","4","5","6","7","8","9","0");  
          
          
        MfG  
        
        -- 
        Alle Angaben wie immer ohne Gewähr  
          
        \     \           /    /              \    \          /     /  
         \     \         /    /                \    \        /     /  
          \     /´¯.l.¯`\    /                  \   /´¯.l.¯`\     /  
          |    l   .l.  (¯ '\                   /' ¯)  .l.   1    |  
          l    l   .l.   \   \                 /   /   .l.   1    1  
          l    l´¯.l´¯.l  \  '|               |'  /  1.¯´1.¯´1    1  
          \                                                       /
        
    2. Hi Tobias,

      mit einem einfachen str_replace()

      Ich weiß nicht genau, wie PHP das handhabt, wenn du in einem Zahlenwert Zeichenketten ersetzen willst - in einer richtigen[tm] Programmiersprache jedenfalls müsstest du die Zahl erst in einen String umwandelt. Ließe sich in PHP mit strval() machen - für einen sauberen Programmierstil sicherlich zu empfehlen.

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
      Auf viele Fragen weiß auch Wikipedia eine Antwort.
    3. Hi,

      $von = array(1,2,3,4,5,6,7,8,9,0);

      $nach = array('<img src="1.gif" alt="1">', '<img src="2.gif" alt="2">', [...], '<img src="0.gif" alt="0">');
      $zahl_bilder = str_replace($von, $nach, $zahl);

        
      Ich find das ziemlich unschön, zehnmal fast identischen Code hinzuschreiben (die 10 img im Array).  
        
      Ganz ohne Arrays und doppelten Code:  
        
      `$zahl_bilder = preg_replace('/\d/', '<img src="\0.gif" alt="\0">', $zahl);`{:.language-php}  
        
      cu,  
      Andreas
      
      -- 
      [Warum nennt sich Andreas hier MudGuard?](http://www.Mud-Guard.de/)  
      [Schreinerei Waechter](http://www.schreinerei-waechter.de/)  
        
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
      
      
      1. Hi Andreas,

        $zahl_bilder = preg_replace('/\d/', '<img src="\0.gif" alt="\0">', $zahl);

        es kann so einfach sein :)

        Danke!

        Gruß
         Gero