Problem beim Zählen
Andreas
- php
Hi,
wer mein vorheriges Thema gelesen hat weiß ungefähr worum es geht. Ich trenne von einer Bild URL (http://www.domain.de/pics/0.jpg) das .jpg ab, zähle die Nummer um eins hoch und füge alles wieder zusammen. Jetzt habe ich nur folgendes Problem, dass die Arrays die ich verwende bei der Zahl 19 rumspinnen. Wenn ich die Zahl 19 habe und diese um eins hochzähle, erhalte ich die Nummer 110 anstatt 20. Weiß jemand woran das liegen könnte?
Gruss Andreas
Hallo Andreas,
wer mein vorheriges Thema gelesen hat weiß ungefähr worum es geht.
Und warum machst Du nicht in Deinem vorigen Thema weiter? [pref:t=51593&m=283569]
Jetzt habe ich nur folgendes Problem, dass die Arrays die ich verwende bei der Zahl 19 rumspinnen. Wenn ich die Zahl 19 habe und diese um eins hochzähle, erhalte ich die Nummer 110 anstatt 20. Weiß jemand woran das liegen könnte?
Bei mir funktioniert das ganze anstandslos. Kann es sein, dass bei Dir nicht 19 sondern 109 in der URL steht, _bevor_ sie ersetzt wird?
Viele Grüße,
Christian
Ich hab noch mal geschaut. Aber es steht in der URL wirklich 19 drin und nicht 109. Das ganze ist schon recht seltsam. Aber hier noch mal der bisherige Code. Hab es aber doch noch mit ereg gemacht.
<?php
$bildurl = $_GET['url'];
ereg("^(.+)([0-9]+)(.jpg)$", $bildurl, $array1);
$array1[2] = $array1[2]-1;
$bildurl = $array1[1].$array1[2].$array1[3];
if ($array1[2] < "0")
echo "";
else
echo "<a href="?url=$bildurl" target="_self"><img src="../images/previous.gif" border="0" alt="Vorheriges Bild"</a>";
?>
Also am Code an sich kann ich keinerlei Fehler entdecken.
Gruss Andreas
Hi,
Ich hab noch mal geschaut. Aber es steht in der URL wirklich 19 drin und nicht 109. Das ganze ist schon recht seltsam. Aber hier noch mal der bisherige Code.
ereg("^(.+)([0-9]+)(.jpg)$", $bildurl, $array1);
Das führt bei http://www.domain.de/pics/19.jpg dazu, daß
der erste geklammerte Ausdruck 'http://www.domain.de/pics/1' (so viele beliebige Zeichen wie möglich) enthält,
der zweite enthält die 9, der dritte '.jpg'.
Du mußt verhindern, daß die erste(n) Ziffer(n) zur ersten Klammer gerechnet werden.
Z.b. indem Du dafür sorgst, daß der / das letzte Zeichen der ersten Klammer ist...
cu,
Andreas
Hi,
und wie mache ich das am Besten, dass der / das letzte Zeichen der ersten Klammer ist? Ich steh glaub grad voll auf dem Schlauch.
Danke im Voraus.
Gruss Andreas
Hallo Andreas,
Hab es aber doch noch mit ereg gemacht.
Warum?
ereg("^(.+)([0-9]+)(.jpg)$", $bildurl, $array1);
Du hast keinen einzigen Link gelesen, den ich Dir im anderen Thread gepostet habe. Sonst wüßtest Du, dass
a) *nichts* für ereg spricht
b) .+ zuviel frisst
c) du den Quantifier mit einem nachgestellten Fragezeichen oder dem U-Modifier nicht so gierig machen kannst - allerdings nur bei preg
Viele Grüße,
Christian
Hi,
ereg("^(.+)([0-9]+)(.jpg)$", $bildurl, $array1);
Du hast keinen einzigen Link gelesen, den ich Dir im anderen Thread gepostet habe. Sonst wüßtest Du, dass
a) *nichts* für ereg spricht
b) .+ zuviel frisst
c) du den Quantifier mit einem nachgestellten Fragezeichen oder dem U-Modifier nicht so gierig machen kannst - allerdings nur bei preg
d) einfach ein / oder ein [^0-9] ans Ende des ersten Klammerinhalts und es geht auch mit ereg...
cu,
Andreas
@MudGuard
Danke. Klappt prima.
Gruss Andreas
Jetzt habe ich nur folgendes Problem, dass die Arrays die ich verwende bei der Zahl 19 rumspinnen. Wenn ich die Zahl 19 habe und diese um eins hochzähle, erhalte ich die Nummer 110 anstatt 20. Weiß jemand woran das liegen könnte?
Rate mal mit Rosenthal.. Wie gedenkst Du soll jemand einen Fehler in Deinem Code finden, wenn Du Deinen Code zur Geheimsache erklärst?
Gruß,
soenk.e