dennisb: Umsetzung....

Hallo leute....
sorry für noch ein Posting am diesem Tag....

Meine frage:

Man kennt es ja aus gästebüchern und so.....und zwar folgendes:
Ein User klickt eine Grafik an im diese in seinem Posting anzuzeigen...
z.b steht dann für die Grafik eine "Alias" name z.b "%sm63%" und dann wird die Grafik angezeigt.
Wie kann man das wenn man so eine Seite Programmiert umsetzten und diese "Alias" namen die man für die Grafik gewählt hat abfängt und dann durch die Grafik ersetzt?
Das einzige was mir dabei einfällt währe den ganzen string zu durchlaufen und den string zu suchen.

geht es auch einfacher?

Danke für jede sinnvolle antwort && schönen Abend noch!

Dennisb

  1. Moin!

    Das einzige was mir dabei einfällt währe den ganzen string zu durchlaufen und den string zu suchen.

    geht es auch einfacher?

    Nein, aber es gibt ja Funktionen, die das komplett erledigen. str_replace() beispielsweise.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Yep...danke.....

      da habt ihr mir echt auf die Sprünge geholfen!! Super!

      Schönen Sonntag noch!!

      dennisb

  2. Das einzige was mir dabei einfällt währe den ganzen string zu durchlaufen und den string zu suchen.

    Richtig, wie Sven schon sagte, die Funktion str_replace ist dafür sehr geeignet. Die ist total einfach. Nur das drumherum wird etwas schwieriger.

    geht es auch einfacher?

    Also ganz ohne Aufwand geht das natürlich nicht. Wie gesagt, str_replace ist schon mal ein guter Anfang.
    Ich würde die Kürzel und deren zugehörige Bilder in ein mehrdimensionales Array stecken. Das kannst du gut mit foreach() und dergleichen durchlaufen. In der Schleife steht dann die str_replace-Funktion.
    Wenn du auch noch jeden User selber auswählen lassen wolltest, welches Zeichen mit welchem Bild ersetzt werden will, empfehle ich dir, die Sachen in eine Datenbank zu schreiben, und die dann auszulesen und dann eben dynamisch in ein Array zu schreiben.
    Wenn du das aber machst, läufst du Gefahr, dass mehrere User denselben Ersetzungsstring ausgewählt haben, weshalb ein Zusatzfeld in der Datenbank, welches (zumindest) den Benutzernamen beinhaltet, unerlässlich ist. Auf dieses Feld prüfst du dann.

    Hoffe ich konnte helfen.

    Viele Grüße
    Esel

    1. echo $begrüßung;

      Ich würde die Kürzel und deren zugehörige Bilder in ein mehrdimensionales Array stecken.

      Mehrdimensionales Array? Meinst du das wirklich so, oder meintest du ein assoziatives Array?

      $images = array(
        '%sm63%' => '<img ...>',
        '%sm64%' => '<img ...>',
        ...);

      Das kannst du gut mit foreach() und dergleichen durchlaufen. In der Schleife steht dann die str_replace-Funktion.

      Mit dem Array ist es noch einfacher, denn dieses braucht man nur zusammen mit dem Text der Funktion strtr() (Aufrufvariante 2) zu übergeben.

      echo "$verabschiedung $name";

      1. Hi

        Mehrdimensionales Array? Meinst du das wirklich so, oder meintest du ein assoziatives Array?

        Mit assoziativen Arrays kenne ich mich nicht so aus. Ich jedenfalls hätte es mit einem mehrdimensionalen Array versucht.

          
        $images = array(array("%sm63%","BILDQUELLE"),array("%sm64%","BILDQUELLE"),...)  
        
        

        und dementsprechend auch die for- oder foreach-Schleife:

          
        foreach($x;$x<count($images);$x++)  
        {  
          
         if(strpos($text,$images[$x][0]))  
         {  
           str_replace($images[$x][0],$images[$x][1],$text);  
         }  
          
        }  
        
        

        Wie gesagt, dynamisches Befüllen des Arrays müsste davor erfolgen.

        Wenn es einfacher geht, assoziative Arrays zu nehmen, dann empfehle ich dir, dennisb, auch assoziative Arrays zu benutzen.

        Viele Grüße
        Esel

        1. Hallo nochmal,

          und dementsprechend auch die for- oder foreach-Schleife:

          foreach($x;$x<count($images);$x++)
          [..]

            
          Natürlich ein Schreibfehler. Das sollte eigentlich eine for-Schleife sein. Ich bitte diesen Fehler zu entschuldigen.  
            
          Viel Spaß  
          Esel
          
          1. Hallo Esel,

            Natürlich ein Schreibfehler. Das sollte eigentlich eine for-Schleife sein. Ich bitte diesen Fehler zu entschuldigen.

            kein Problem. ;-)
            Dann sollte es anstatt

            foreach($x;$x<count($images);$x++)

            auch bestimmt

            for ($x=0; $x<count($images); $x++)
              ^    ^
            heißen, oder nicht? :-P

            Schönen Sonntag noch,
             Martin

            --
            Was du heute kannst besorgen,
            das geht sicher auch noch morgen.
            1. Hi Martin,

              Dann sollte es anstatt

              foreach($x;$x<count($images);$x++)

              auch bestimmt

              for ($x=0; $x<count($images); $x++)
                ^    ^
              heißen, oder nicht? :-P

              Stimmt, da haste auch wieder recht. Noch ein Fehler meinerseits ;)

              Viele Grüße
              Esel

        2. Hallo,

          Mit assoziativen Arrays kenne ich mich nicht so aus. Ich jedenfalls hätte es mit einem mehrdimensionalen Array versucht.

          $images = array(array("%sm63%","BILDQUELLE"),array("%sm64%","BILDQUELLE"),...)

          
          >   
          > und dementsprechend auch die for- oder foreach-Schleife:  
          >   
          > ~~~php
            
          
          > foreach($x;$x<count($images);$x++)  
          > {  
          >   
          >  if(strpos($text,$images[$x][0]))  
          >  {  
          >    str_replace($images[$x][0],$images[$x][1],$text);  
          >  }  
          >   
          > }  
          > 
          
          

          Wie gesagt, dynamisches Befüllen des Arrays müsste davor erfolgen.

          Das ist IMHO Overkill (warum strpos verwenden, warum str_replace n mal anwenden, wenn einmal reicht?) - und funktioniert zudem nicht (unabhängig von der foreach-Geschichte), da strpos auch 0 als gültigen Index zurückliefern kann und außerdem musst Du mit dem Rückgabewert von str_replace auch was anfangen.

          Folgndes ist IMHO *viel* einfacher, klarer und verständlicher:

          $ersetzungen = array(  
            '%smf63%' => 'bla...',  
            '%smf64%' => 'blub...'  
          );  
            
          $text = str_replace (array_keys ($ersetzungen), array_values ($ersetzungen), $text);
          

          Viele Grüße,
          Christian

          --
          "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup