Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Javascript-Problem ab modified eCommerce Shopsoftware 1.05 SP1 aufwärts

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Hallo,

    kann mir bitte jemand sagen welche Datei im Update von 1.05 auf 1.05SP1 dafür verantwortlich ist, daß in einer eingebundenen Javascript Datei aus && (Stand 1.05) jetzt && (1.05SP1, 1.05SP1a und 1.05SP1b) wird?

    Oder gibt es eine Smarty Lösung da der Code in einer html Datei mit {literal} {/literal} eingebunden ist?

    Problem ist in einer Original Installation. Bei 1.05 funktioniert alles wunderbar. Einbaufehler ab 1.05SP1 und höher sind ausgeschlossen, da zig mal verglichen. Beim Vergleich des Quellcodes kam dann der Unterschied von && und && zum Vorschein.

    Danke.

    Gerd



    Linkback: https://www.modified-shop.org/forum/index.php?topic=17710.0

    h-h-h

    • modified Team
    • Beiträge: 4.562
    /includes/classes/Smarty_2.6.26/plugins/outputfilter.note.php

    suche:

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);

    ersetze mit:

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|&|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);

    Gruß

    h-h-h

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Danke h-h-h,

    bei mir war nur

    Code: PHP  [Auswählen]
      $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z]+;))/i", "&", $tpl_output);  

    hab es ersetzt mit Deinem Code ...

    ... und muß sagen SPITZE ! Schnelle Lösung und funktioniert 1A!

    Vielen Dank Du hast meinen Tag gerettet.

    Gerd

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Die Korrektur wurde in r2604 in den Trunk übernommen! :!:

    Grüße

    Torsten

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Die Korrektur bringt nichts, damit wird nur das erste & bei einem && nicht ersetzt. Die positive Rückmeldung wundert mich ein wenig.

    Hiermit funktioniert es:

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;)||&)/i", "&", $tpl_output);

    Aber die Syntax sollte einer von unseren RegEx-Killern mal kontrollieren. ;)

    Gruß

    h-h-h

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Also eine Korrektur deiner Korrektur? *gg*

    Wir bitten um Feedback. :thx:

    Grüße

    Torsten

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Also eine Korrektur deiner Korrektur? *gg*
    [...]

    Exakt, so ist es. ;)

    Gruß

    h-h-h

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Ahhh okay! ;-)

    [...]
    Hiermit funktioniert es:

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;)||&)/i", "&", $tpl_output);

    Aber die Syntax sollte einer von unseren RegEx-Killern mal kontrollieren. ;)
    [...]

    Wir bitten um Feedback, damit wir das im Trunk entsprechend korrigieren können! :!:

    Grüße

    Torsten

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Ich seziere mal...

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;)||&)/i", "&", $tpl_output);

    Alle & auf die folgende Sachen nicht folgen werden mit & ersetzt.
    • amp;
    • #Ziffern;
    • Ziffern oder Buchstaben;
    • nichts
    • Das & Zeichen

    Hier sehe ich theoretisch 2 Problemstellen und eine Optimierungsmöglichkeit.
    • Nichts folgt eigentlich nur am Ende. Warum soll das & dann nicht ersetzt werden? Und wäre $ anstelle von "gar nichts" nicht besser?
    • Wenn ein & auf dem ein & folgt nicht ersetzt werden darf, wird jedoch dieses folgende & ersetzt, da auf ihn ja kein & folgt. Aus && kann somit && werden. Ist das gewollt?
    • Eine RegEx wird von links nach rechts abgearbeitet. Die Argumente in ( ) werden genau so verarbeitet. Somit sollten die simpleren Ausdrücke weiter links stehen, so ist die RegEx Maschine bei möglichen Treffern schneller fertig. Ist dasselbe wie bei Argumenten in einem PHP If :)
    Viele Grüße,
    Tekin Birdüzen - Zend Certified Engineer

    web28

    • modified Team
    • Beiträge: 9.404
    Hallo Tekin,

    beide Vorschläge funktionieren leider nicht richtig.

    Das ist der Code aus dem SP1b

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/&(?!(amp;|#[0-9]+;|[a-z0-9]+;))/i", "&", $tpl_output);

    Das funktioniert bis auf einen Problemfall:

    && (2 & Zeichen direkt hintereinander)

    Das sollte nicht ersetzt werden, weil es ansonsten zu Problemen mit Inline JavaScript (Und Verknüpfung) geben kann.
    Sinnigerweise sollte &&Leerzeichen von der Ersetzung ausgeschlossen werden.

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Aber in JavaScript (wenn auch in Ausnahmefällen) kann auch ein & für sich allein für eine binäre AND Operation stehen. Eigentlich darf im JavaScript Code das & überhaupt nicht ersetzt werden.

    Für Euren && Fall würde ich folgende RegEx verwenden:

    Code: PHP  [Auswählen]
    $tpl_output = preg_replace("/((?<!&))&(?!(&|amp;|#[0-9]+;|[a-z0-9]+;))/i", "&amp;", $tpl_output);

    Das negative Lookbehind dient dazu, dass das zweite & beim && nicht durch &amp; ersetzt wird.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Es wäre super, wenn Gradler das mal testen könnte! :thumbs:

    Grüße

    Torsten

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Ich werd's mal lokal testen - lasst mir hierzu bitte noch ein wenig Zeit, hab derzeit anderweitug viel um die Ohren. Die bisherige Lösung von h-h-h brachte eigentlich schon den gewünschten Erfolg.

    Gerd

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Kurze Info, hab die Lösung von noRiddle Re: Javascript in Content einbetten... genommen. Funktioniert 1a!

    Danke
    Gerd
    rechtstexte für onlineshop
    7 Antworten
    2721 Aufrufe
    13. Oktober 2018, 15:06:41 von Alfred
    0 Antworten
    910 Aufrufe
    29. November 2019, 15:51:17 von benax
               
    anything