Problem mir str_replace und Zahlen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
bild
code
datenbank
datum
ersetzen
fehler
funktionieren
grund
inhalt
jeweiligen bilder
pfad
schau
schleife
sicherheit
sinn
stehen
url
zahl
zeile
-
Hallo,
Ich habe ein Problem unzwar:
Wenn ich den code so ausführe:
$dMap = str_replace("0", "<img src='images/Tilemap/Wasser/Wasser_01.png'>", $dMap);
kommt über echo kein bild sondern einmal dieses Zeichen dafür das das Bild nicht gefunden wurde und direkt dahinter
1.png'>
Wenn ich allerdings den code so ausführe:
$dMap = str_replace("0", "<img src='images/Tilemap/Wasser/Wasser.png'>", $dMap);
und die Grafik Datei auch dementsprechen bennene wird das Bild angezeigt.
Wieso genau ist das so und wie kann ich dies umgehen/beheben? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hallo
läuft der Aufruf in einer Schleife oder wird sondt irgendwie doppelt ausgeführt,
normalerweise sollte das schon funktionieren
masterakio1995 schrieb:
$dMap = str_replace("0", "<img src='images/Tilemap/Wasser/Wasser_01.png'>", $dMap);
aber wenn Du es doppelt ausführst,
dann wird halt die 0 bei Wasser_01.png wieder durch den code ersetzt
also es sieht für mich so aus, als würde es mind. 2x ausgeführt, daher der Fehler
denn normal (bei 1x Ausführung) sollte es eigentlich gehen
-
Interessant ist noch, was vor dem Aufruf in
steht.$dMap
Schließlich lautet der Funktionsaufruf von str_replace so:
Da der 3. Parameter den Text enthält, in dem ersetzt werden soll, ist der Inhalt von $dMap vor dem Aufruf wichtig.mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
-
Der Inhalt der variable $dMap ist:
:D0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>
sparsuche schrieb:
hallo
läuft der Aufruf in einer Schleife oder wird sondt irgendwie doppelt ausgeführt,
normalerweise sollte das schon funktionieren
masterakio1995 schrieb:
$dMap = str_replace("0", "<img src='images/Tilemap/Wasser/Wasser_01.png'>", $dMap);
aber wenn Du es doppelt ausführst,
dann wird halt die 0 bei Wasser_01.png wieder durch den code ersetzt
also es sieht für mich so aus, als würde es mind. 2x ausgeführt, daher der Fehler
denn normal (bei 1x Ausführung) sollte es eigentlich gehen
Du hast recht aber wie könnte ich die _01 den ersetzten so das es auch zahlend vortlaufen ist?
Beitrag zuletzt geändert: 29.3.2012 21:12:17 von masterakio1995 -
Ich habe das jetzt so getestet:
Das funktioniert genau so wie es soll.$dMap = '0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>'; $dMap = str_replace('0', '<img src="images/Tilemap/Wasser/Wasser_01.png">', $dMap); echo($dMap);
sparsuche schrieb:
Das muss der Grund sein, da str_replace mit 100%iger Sicherheit so funktioniert wie es soll. Schau also, ob du die Zeile nicht irgendwie 2x hintereinander aufrufst (Schleife?).
[...] läuft der Aufruf in einer Schleife oder wird sondt irgendwie doppelt ausgeführt [...]
[...] aber wenn Du es doppelt ausführst,
dann wird halt die 0 bei Wasser_01.png wieder durch den code ersetzt
also es sieht für mich so aus, als würde es mind. 2x ausgeführt, daher der Fehler
denn normal (bei 1x Ausführung) sollte es eigentlich gehen
-
hackyourlife schrieb:
Ich habe das jetzt so getestet:
Das funktioniert genau so wie es soll.$dMap = '0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>'; $dMap = str_replace('0', '<img src="images/Tilemap/Wasser/Wasser_01.png">', $dMap); echo($dMap);
sparsuche schrieb:
Das muss der Grund sein, da str_replace mit 100%iger Sicherheit so funktioniert wie es soll. Schau also, ob du die Zeile nicht irgendwie 2x hintereinander aufrufst (Schleife?).
[...] läuft der Aufruf in einer Schleife oder wird sondt irgendwie doppelt ausgeführt [...]
[...] aber wenn Du es doppelt ausführst,
dann wird halt die 0 bei Wasser_01.png wieder durch den code ersetzt
also es sieht für mich so aus, als würde es mind. 2x ausgeführt, daher der Fehler
denn normal (bei 1x Ausführung) sollte es eigentlich gehen
Schau mal in den beitrag über dir ;) -
masterakio1995 schrieb:
Dazu brauche ich ein Beispiel: was gibst du rein, was soll rauskommen.
Du hast recht aber wie könnte ich die _01 den ersetzten so das es auch zahlend vortlaufen ist?
Du wirst jedenfalls nicht um Reguläre Ausdrücke herumkommen... -
Ich habe den DB einträgen jeweils zahlen von bisher 0-13 zugeordnet. Diese zahlen werden dan durch den jeweiligen bilder pfad ersetzt der lautet z.b. /pfad/Wasser_01.pnd oder /pfad/Grass_01.png
-
Falls du es schaffst die Zahlen im richtigen Format (01 - 14) aus deiner Datenbank auszugeben:
In$subject = '00|01|02|03|04|05<br />06'; $pattern = '/([0-9]+)/'; $replace = '<img src="images/Tilemap/Wasser/Wasser_$0.png" />'; $result = preg_replace($pattern, $replace, $subject); echo($result);
müssen deine Zahlen stehen.$subject
-
ich werde es morgen mal versuchen es so zu machen heute ist mir das schon zu spät. Danke erstmal ich werde dan morgen posten ob es geklappt hat oder nicht.
-
masterakio1995 schrieb:
ah yo!¿ das ist also die variable!¿ und was soll als 'sinn' (sprich: SINN)) dahinter stecken¿¿
Der Inhalt der variable $dMap ist:
0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/> 0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|<br/>
du sagst ja selbst::D
und genau DAS passiert auch: gar nix!
es wäre konstruktiver, wenn du uns verrätest, wo die ominösen daten ($dMap) herkommen, was sie heißen wollen/sollen, was sie verursachen wollen/sollen und dann könne wir '_xx' durch was du willst ersetzen, so dass auch danach es noch funzt ;)
... sonst sieht man nicht durch ... :(( -
hemiolos schrieb:
es wäre konstruktiver, wenn du uns verrätest, wo die ominösen daten ($dMap) herkommen, was sie heißen wollen/sollen, was sie verursachen wollen/sollen und dann könne wir '_xx' durch was du willst ersetzen, so dass auch danach es noch funzt ;)
Das wurde hier beschrieben:masterakio1995 schrieb:
Ich habe den DB einträgen jeweils zahlen von bisher 0-13 zugeordnet. Diese zahlen werden dan durch den jeweiligen bilder pfad ersetzt der lautet z.b. /pfad/Wasser_01.pnd oder /pfad/Grass_01.png
Die Lösung ist demnach noch viel einfacher als angenommen: er kann er sofort die img-Tags erstellen ohne den Umweg über die Datenbank sowie die $dMap-Variable und das ersetzen der Zahlen.
Das könnte so aussehen:
Dabei ist 22 die Zeilenzahl, 24 die Spaltenzahl und 14 die Anzahl der Bilder.for($i = 0; $i < (22*24); $i++) { printf('<img src="images/Tilemap/Wasser/Wasser_%02d.png" />', ($i % 14) + 1); if((($i + 1) % 24) == 0) echo("<br />\n"); }
Unterschiede:
1) es muss kein $dMap erstellt werden, nur um dort wieder Daten zu ersetzen
2) es wird keine Datenbank benötigt -
Also es wird eine Map erstellt und die Zahlen stehen für die einzelnen Tiles. Diese Zahlen sollen demnach durch das Bild des Tiles ersetzt werden. Und da die Maps in einer Datenbank gespeichert werden ist der zugriff auf die Datenbank nötig.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage