Umsetzung....
dennisb
- php
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
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
Yep...danke.....
da habt ihr mir echt auf die Sprünge geholfen!! Super!
Schönen Sonntag noch!!
dennisb
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
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";
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
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
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
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
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