TAB replace für Export Description

Thema wurde von Anonymous, 28. Mai 2020 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    31. August 2017
    Beiträge:
    63
    Danke erhalten:
    9
    Danke vergeben:
    29
    Moin Moin,
    und ne kurze frage / bitte.

    Die Zeile:

    PHP:
    $t_products_description preg_replace('!(.*?)\[TAB:(.*?)\](.*?)!is'"$1$3"$t_products_description);
    sorgt ja dafür, das beim export die Tab-Überschriften nicht im Text auftaucht.

    Ich hätte gerne das alles ab "[TAB" nicht mehr im Export auftaucht.
    Also wirklich nur das was in der Textarea products_description eingetragen wurde (ohne Tab Content).

    Wie müsste man die Zeile umschreiben? o_O

    Ich hab von dem ...Regex... ...replaceAll... leider kein plan und möchte nix falsch machen. :(

    Danke Danke Danke :)
     
  2. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Müsste so gehen:
    $t_products_description = preg_replace('!(.*?)\[TAB:(.*?)\](.*?)!is', "$1", $t_products_description);
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    31. August 2017
    Beiträge:
    63
    Danke erhalten:
    9
    Danke vergeben:
    29
    Hi Wilken :cool:,
    aber leider nein... hatte ich schon probiert... und wäre ja fast zu einfach gewesen :)

    Cache löschen muss ja hier ja nicht :D
     
  4. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Puh, das hätte finde ich wirklich klappen müssen, der Regex ist richtig. Bist du an der richtigen Codestelle, reagiert die auf andere Versuche?`

    $t_products_description = preg_replace('!(.*?)\[TAB:(.*?)\](.*?)!is', "$1HUNDKATZEMAUS$3", $t_products_description);

    ...müsste dann ziemlich viele HUNDKATZEMAUS an den Stellen deiner Tabs in den Export tapezieren.
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    31. August 2017
    Beiträge:
    63
    Danke erhalten:
    9
    Danke vergeben:
    29
    Ja den selben Ansatz hatte ich auch :)

    HUNDKATZEMAUS wird tapezieren :cool: anstelle des TAB-Namen

    $1 = Content VOR dem TAB
    $2 = (Wäre) der TAB-Namen aka HUNDKATZEMAUS
    $3 = Content NACH dem TAB

    Und ich bräuchte halt NUR $1 also die logic $3 raus *bums aus ende* passt...
    ... aber es wieder holt sich ja... array

    und ich brauch nur den ersten Content ($1). :mad:


    PS: Es geht um dieses Abschnitt:

    PHP:
        protected function p_description$p_data_array )
        {
            
    $t_return '';
            
    $t_products_description = isset($p_data_array['products_description.' $this->v_language_array['code']]) ?
                                        
    $p_data_array['products_description.' $this->v_language_array['code']] :
                                        
    $p_data_array['products_description'];

            if( isset( 
    $t_products_description ) )
            {
                
    $t_products_description preg_replace('!(.*?)\[TAB:(.*?)\](.*?)!is'"$1$3"$t_products_description);
                
    $t_products_description $this->_replace_whitespaces($t_products_description);
                
    $t_products_description no_html($t_products_description);
                
    $t_return $t_products_description;
            }

            return 
    $t_return;
        }
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    31. August 2017
    Beiträge:
    63
    Danke erhalten:
    9
    Danke vergeben:
    29
    Falls es nochmals wer braucht...

    PHP:
            $t_matches = array();
            
    preg_match('/(.*)\[TAB:/isU'$t_products_description$t_matches);
            
    $t_products_description $t_matches[1];
    So geht es und es wird nur der Content vor dem ersten Tab ausgegeben, egal wieviele es gibt.