str_replace probleme

WaldemarFunk

Grünschnabel
Hallo ! Leider habe ich schon wieder ein Problem.

Ich habe folgenden Script:

$material=str_replace ("q1", '<img src="../stoffe/Q/Q1.jpg" height="40" width="40" alt="Q1">', $material);

das ganze funktioniert auch bis zum Wert q9, ab q10 bringt er mir das Bild von q1 und eine 0.

Da wollte ich mal fragen ob jemand den Fehler an der ganzen Geschichte sieht:

Danke im Vorraus
 
Der Fehler ist, dass der String q1 auch in q10 vorkommt....und daher ersetzt wird.

Nehme dafür besser preg_replace()... da kannst du per RegExp zum Beispiel bestimmen, dass dem gesuchten String keine Ziffer folgen darf....was das Problem beheben würde.
 
Hallo ! Danke für die schnelle Antwort.

Deine Lösung des Problems erscheint mir logisch.
Leider bin ich kein geübter PHP Programmeiere und habe mit preg_replace().. und RegExp keine Erfahrung.

Ich haber bereiits das tut durchgelesen, bringe es aber nicht auf die Lösung.
Könntest du mir ein Beispiel zeigen ? Danke
 
Ist halb so kompliziert, wie es manchmal aussehen mag :)
Code:
$material=preg_replace ("/q1(?!\d)/", '<img src="../stoffe/Q/Q1.jpg" height="40" width="40" alt="Q1">', $material);

(?!\d) ist dabei die Bedingung, welche ausschliesst, dass dem Suchmuster q1 eine Ziffer folgt(\d ist der reguläre Ausdruck für eine Ziffer)

Das Ganze geht natürlich auch in einer Schleife....
Code:
$qStart=1;
$qEnd=20;

for($i = $qStart; $i <= $qEnd; ++$i)
    {
    $material=preg_replace("/q".$i."(?!\d)/",
                           '<img src="../stoffe/Q/Q'.$i.'.jpg" height="40" width="40" alt="Q'.$i.'">',
                            $material);
    }

...würde das bspw. für q1-q20 erledigen.
 
Zurück