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: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Hallo zusammen,

    ich bräuchte Hilfe für ein regex mit smarty

    folgenden Code habe ich mir zusammengebastelt

    \,(.*)$

    und der funktioniert auch unter regex101 im Test (wobei das hier glaube ich anders angewendet wird als im tamplate)

    Aber irgendwie bekomme ich das im Shop nicht zum laufen.

    Ich habe ein smarty mit einem Komma im Text und nach dem Komma einen Farbwert:

    Also zum Beispiel:   MeinArtikel, rot

    Jetzt möchte ich alles vor dem Komma und das Komma weg haben, also nur rot

    Leider funktioniert das nicht.....

    {$PRODUCTS_NAME | regex_replace:"\,(.*)$"}

    Danke für Hilfe

    Gruß

    Jürgen

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

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #1 am: 17. September 2021, 14:00:49
    Hallo Jürgen,

    bei regex_replace muss man angeben was man womit ersetzen will. Das heisst also, ohne auf die Richtigkeit deines regulären Ausdrucks einzugehen, dass dein geposter Code so

    Code: PHP  [Auswählen]
    {$PRODUCTS_NAME | regex_replace:"\,(.*)$":""}

    aussehen muss.

    Näheres hier -> https://www.smarty.net/docsv2/de/language.modifier.regex.replace.tpl

    Gruss
    Hanspeter

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #2 am: 17. September 2021, 14:11:42
    Ok,

    learning by doing

    Einen Schritt weiter...das funktioniert $1 ist das Komma und alles davor und $2 ist alles nach dem Komma...

    Code: PHP  [Auswählen]
    {$PRODUCTS_NAME|regex_replace:"/(.*)\,(.*)$/":"$2"}

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #3 am: 17. September 2021, 14:15:19
    Hallo Hanspeter,

    das hat sich jetzt überschnitten.....

    Danke für das feedback, mit deinem Code bekomme ich eine weisse Seite....

    Gruß

    Jürgen

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #4 am: 20. September 2021, 13:50:26
    Muss das Thema noch mal aufmachen....

    Das funktioniert auf Artikelseiten

    Code: PHP  [Auswählen]
    {$PRODUCTS_NAME|regex_replace:"/(.*)\,(.*)$/":"$2"}

    Ich erhalte $2 - Also alles nach dem Komma im Artikelnamen, bei mir die Farbe...

    Warum funktioniert das regex nicht in der includes/metatags.php ?

    Code: PHP  [Auswählen]
     $meta_descr = ('Farbe ').$product->data['products_name|regex_replace:"/(.*)\,(.*)$/":"$2"'].': '.$product->data['products_description'];

    $product->data['products_name'] - Gibt mir den Artikelnamen zurück

    $product->data['products_name|regex_replace:"/(.*)\,(.*)$/":"$2"'] - Git mir keinen Inhalt zurück  :glaskugel:

    Gruß

    Jürgen

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #5 am: 20. September 2021, 14:08:13
    Hallo Jürgen,

    im ersten Fall handelt es sich ja um eine Smarty-Variable, bei Deinem zweiten Beispiel brauchst Du  aber eine php-Funktion. Ich würde mal sagen mit preg_split kommst Du ans gewünscht Ziel:
    Code: PHP  [Auswählen]
    <?php
    $2 = preg_split('/(.*)\,(.*)$/', $product->data['products_name']);
    print_r($2);
    ?>
     

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #6 am: 20. September 2021, 14:52:53
    Sorry Irrtum meinerseits

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #7 am: 20. September 2021, 15:16:27
    @fivebytes

    Danke, damit komm ich leider nicht weiter....habe das mal nach meinem Verständniss in die metatags eingebaut und bekomme jeh nach dem wie ich den Code änder entweder array oder 1 als Ausgabe...

    Nachdem ich {$PRODUCTS_NAME|regex_replace:"/(.*)\,(.*)$/":"$2"} in der product info verwende...
    würde ich eigentlich lieber direkt global {$PRODUCTS_COLOR}  definieren, also den Artikelnamen ab dem Komma = Farbwert bei mir.

    Nachdem ich davon ausgehe, dass die smartys aus der  includes/classes/product.php bekannt sein müssten..
    habe ich das in der includes/classes/product.php versucht, komme da aber nicht weiter wie der Code aussehen müsste...

    {$PRODUCTS_NAME} ist bei mir immer folgendes : Artikel, Farbe
    Und ich möchte ein smarty welches nur "Farbe" enthält definieren

    Code: PHP  [Auswählen]
     'PRODUCTS_COLOR' => $array['products_name'],  // Wie müsste das aussehen mit  regex_replace:"/(.*)\,(.*)$/":"$2" oder preg_split('/(.*)\,(.*)$/

       

    Erhalte nur Fehler/weisse Seite wenn ich das versuche....

    Danke und Gruß

    Jürgen

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #8 am: 20. September 2021, 15:40:27
    Hallo Jürgen

    versuch es mal so, nicht getestet.

    Code: PHP  [Auswählen]
    'PRODUCTS_COLOR' => preg_replace("/(.*)\,(.*)$/", $2, $array['products_name']),

    Gruss
    Hanspeter

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #9 am: 20. September 2021, 15:56:58
    Hallo Hanspeter,

    da bekomme ich in der Codevorschau (Dreamweaver) bereits einen syntax error und im Shop weisse Seite :’-(

    Wobei es in der product.php bereits "ähnlich" definierte Variablen gibt zum Beispiel

    Code: PHP  [Auswählen]
    'PRODUCTS_IMAGE_ALT' => str_replace(array('"', "'"), array('&quot;', '&apos;'), $array['products_name']), // Currently not in use

    Danke für dein Feedback

    Gruß

    Jürgen

    Jürgen

    • Viel Schreiber
    • Beiträge: 891
    • Geschlecht:
    Re: smarty regex - Alles vor Zeichen und Zeichen selbst entfernen
    Antwort #10 am: 20. September 2021, 16:03:24
    Hallo Hanspeter,

    das funktioniert...

    Code: PHP  [Auswählen]
    'PRODUCTS_COLOR'  => preg_replace("/(.*)\,(.*)$/", "$2", $array['products_name']),

    Danke Gruß

    Jürgen
    18 Antworten
    8660 Aufrufe
    18. März 2015, 12:44:34 von 0815
    0 Antworten
    1582 Aufrufe
    05. Juni 2014, 13:44:42 von scottgzero
    2 Antworten
    7195 Aufrufe
    16. Januar 2012, 12:52:01 von sandro22
    2 Antworten
    2791 Aufrufe
    16. Oktober 2009, 15:06:17 von koshiro