Hallo Community.
Voraussetzung: HTML-Komprimierung ist aktiviert.
Wenn man aufgrund hier nicht näher zu erläuternder Gründe Inline-CSS benutzt und in einem Wert einer Eigenschaft Minus-Zeichen benötigt wird der CSS-Befehl zerstört.
Beispiel:
Aus diesem:
#IRGENDWAS {background:#89362C; box-shadow:2px 2px 2px #89362C, -2px -2px 2px #89362C;}
wird das:
#IRGENDWAS{background:#89362C;box-shadow:2px 2px 2px #89362C,-2px-2px 2px #89362C;}
(Leerzeichen vor dem zweiten -2 wurde entfernt.)
Das liegt an der Regex in folgendem Code in der Funktion
_simpleCodeCompress() in
/includes/external/compactor/compactor.php:
return preg_replace('/\s?([\{\};\=\(\)\/\+\*-])\s?/', "\\1", $code); Alle Leerzeichen vor und nach einem Bindestrich (welcher leider auch ein Minus-Zeichen ist) werden entfernt.
Beim ersten vorkommenden -2 hat das keine Folgen weil es eine Angabe nach einem Komma ist. Beim zweiten -2 allerdings ist es nicht mehr valides CSS da dies entsteht -2-2 .
Es stellt sich die Frage warum überhaupt der Bidestrich, bzw. das Minus-Zeichen, in der Regex enthalten ist.
Ich kann mir gerade keinen Fall vorstellen wo im HTML, im Javascript oder im CSS ein Bindestrich vorkommen könnte welcher Leerzeichen davor oder dahinter hat die entfernt werden müssten.
HTML-Kommentare, welche ja Bindestriche enthalten, werden in der Funktion extra behandelt.
Sollte der Bindestrich in der Regex Sinn machen, weil es mir gerade nicht präsente Fälle gibt wo Leerzeichen entfernt werden sollten um zu komprimieren, muß man sich etwas überlegen um die Fälle von negativen Werten nach einem wert ausschließen:
Evtl. mittels getrennter Behandlung und einem negativen Lookbehind, so ?
$code = preg_replace('/(?<!px)\s?(-)\s?/', "\\1", $code);return preg_replace('/\s?([\{\};\=\(\)\/\+\*])\s?/', "\\1", $code); Damit würden keine Leerzeichen vor - entfernt wenn vor dem Leerzeichen px steht und man bekäme das:
#IRGENDWAS{background:#89362C;box-shadow:2px 2px 2px #89362C,-2px -2px 2px #89362C;}
Wer kann dazu etwas beitragen und/oder hatte das Problem auch schon einmal ?
Gruß,
noRiddle
Linkback: https://www.modified-shop.org/forum/index.php?topic=40184.0