Moin,
if (substr ($_SESSION["Warenkorb"][$x]["Artikel"], 0, 1) == "#")
um auf das erste Zeichen eines Strings zuzugreifen, würde ich nicht die Funktion substr() bemühen, sondern den Zugriff im Array-Stil, etwa so:
if ($_SESSION["Warenkorb"][$x]["Artikel"][0]=="#")
$Artikel = '<span class="Ab18">' . $_SESSION["Warenkorb"][$x]["Menge"] . "x " . substr ($_SESSION["Warenkorb"][$x]["Artikel"], 1, strlen ($_SESSION["Warenkorb"][$x]["Artikel"])) . "</span>";
Hier ist substr() zwar richtig, aber warum machst du dir die Mühe, die gewünschte Länge noch extra auszurechnen (und dann auch noch falsch/zu lang)? Du willst den String ab Offset 1 bis zum Ende, also lass doch den length-Parameter einfach weg.
Was ich jetzt aber nicht verstehe, ist, dass mir Artikel mit dem Kennzeichen "#" im Artikelnamen nur mit der Menge als Zahl, aber ohne das "x", sowie den drei Punkten, angezeigt werden, beispielsweise "1...", alle anderen Artikel hingegen vollständig in der gekürzten Form, beispielsweise "1x Mit Eisenplatten ...".
Wo liegt der Fehler?
Kann ich nicht auf Anhieb erkennen, dafür ist mir dein PHP-Code im ersten Moment zu unübersichtlich. Wie sieht das erzeugte HTML aus? Versuche von dort aus Rückschlüsse auf das falsche Verhalten des PHP-Codes zu ziehen.
Ciao,
Martin
F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
A: Mein Arzt hat mir Valium verschrieben.
F: Und das hilft?
A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(