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: modifier is deprecated, use preg_replace_callback instead

    tuxinger

    • Neu im Forum
    • Beiträge: 11
    Hallo.

    Ich bekomme folgende Fehlermeldung auf dem Rechnungsformular angezeigt.

    Code: PHP  [Auswählen]
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www
    /localhost/htdocs/b2cshop/includes/classes/Smarty_2.6.27/Smarty_Compiler.class.php on line 270

    Wie bekomme ich diese weg?
    Danke im Vorraus.

    MFG
    Tuxinger

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

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #1 am: 05. September 2013, 12:23:22
    Das kommt mit PHP 5.5.x

    das Folgende
    Code: PHP  [Auswählen]
            $source_content = preg_replace($search.'e', "'"
                                           . $this->_quote_replace($this->left_delimiter) . 'php'
                                           . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
                                           . $this->_quote_replace($this->right_delimiter)
                                           . "'"
                                           , $source_content);
     

    ersetzt du mit
    Code: PHP  [Auswählen]
            $source_content = preg_replace_callback($search, create_function ('$matches', "return '"
                                           . $this->_quote_replace($this->left_delimiter) . 'php'
                                           . "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"
                                           . $this->_quote_replace($this->right_delimiter)
                                           . "';")
                                           , $source_content);
     

    tuxinger

    • Neu im Forum
    • Beiträge: 11
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #2 am: 05. September 2013, 14:26:45
    Super. Danke, das war die Lösung.

    MFG
    Tuxinger

    Rothammel

    • Neu im Forum
    • Beiträge: 8
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #3 am: 10. April 2014, 08:13:59
    von mir auch dankeschön  :-)

    Ivarr

    • Fördermitglied
    • Beiträge: 81
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #4 am: 15. Januar 2015, 14:37:18
    Hallo,

    ich bekomme eine ähnliche Meldung wenn ich eine Bestellung aktualisiere und dabei eine Nachricht an den Kunden mit schicke.
    Was muss ich da in welcher Datei ändern?

    Code: PHP  [Auswählen]
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/vxyz/meinshop/includes/classes/class.phpmailer.php on line 1430

    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/vxyz/meinshop/includes/classes/class.phpmailer.php:1430) in /www/htdocs/vxyz/meinshop/admin/includes/functions/general.php on line 198

    VG
    Tom

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #5 am: 16. Januar 2015, 02:35:21
    Am Besten wäre es sich an die Voraussetzungen zu halten.
    Zitat: "PHP ab 5.x bis PHP 5.4.x"

    Gruß,
    noRiddle

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.220
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #6 am: 16. Januar 2015, 07:47:58
    Schalte die Error Meldungen ab.

    Im Ordner /export findest du eine Datei _error_reporting benenne diese um in _error_reporting.none

    Gruss Gerhard

    Ivarr

    • Fördermitglied
    • Beiträge: 81
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #7 am: 28. Januar 2015, 11:55:56
    Eine Lösung (falls noch jemand das Problem hat):

    Da ich auf dem Server noch etwas anderes laufen habe, dass die höhere PHP-Version benötigt, habe ich bei meinem Anbieter angerufen und das Problem geschildert.
    Die haben mir einfach in dem Ordner in welchem der Modified-Shop liegt einen Eintrag in die htaccess gemacht und alles läuft wieder ohne Probleme!

    VG
    Tom

    mahagma

    • Fördermitglied
    • Beiträge: 211
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #8 am: 03. Juni 2015, 18:23:43
    Die Änderung bzw. der Inhalt dieser .htaccess wäre Interessant.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.729
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #9 am: 07. Juni 2015, 15:46:46
    Pauschal ist da nicht zu beantworten.
    • Es gibt Hoster wo man die PHP-Version in der Server-Administration einstellen kann (und dort geht es nicht mittels htaccess)
    • und andere Hoster wo es über htaccess geht (und dort nicht über die Server-Administration)
    • und wieder andere Hoster wo eine php.ini-Datei generiert werden muß mit entsprechendem Eintrag

    Wenn es über die htaccess geht lautet der Eintrag um von PHP 5.5 auf 5.4 down-zu-grade-n z.B. so (hängt wiederum vom Hoster ab):
    AddHandler application/x-httpd-php54 .phpwas bedeutet, daß für alle Files die mit .php enden PHP 5.4 angewendet wird.

    Nenne doch mal deinen Hoster.

    Gruß,
    noRiddle

    UIaLMFdVA

    • Neu im Forum
    • Beiträge: 39
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #10 am: 03. Februar 2016, 17:11:16
    Hallo,
    ich hätte auch ein ähnliches Problem:

    Code: PHP  [Auswählen]
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /includes/classes/class.inputfilter.php on line 300

    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /includes/classes/class.inputfilter.php on line 302

    Die Zeilen im Code sind dann:

    Code: PHP  [Auswählen]
                    // convert decimal
                    $source = preg_replace('/&#(\d+);/me', "chr(\\1)", $source); // decimal notation
                    // convert hex
                    $source = preg_replace('/&#x([a-f0-9]+);/mei', "chr(0x\\1)", $source); // hex notation

    Kann mir bitte jemand weiterhelfen, wie dies mit preg_replace_callback umgebaut wird?

    Danke im Voraus

    jaspa

    • Frisch an Board
    • Beiträge: 89
    • Geschlecht:
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #11 am: 03. Februar 2016, 17:21:10
    Code: PHP  [Auswählen]
    //BOF Change
    //PHP5.6
                    //$source = preg_replace('/&#(\d+);/me', "chr(\\1)", $source); // decimal notation
                    $source = preg_replace_callback('/&#(\d+);/m', function($m){return chr($m[1]);}, $source); // decimal notation
                   
                    // convert hex
                    //BOF change
                    //PHP5.6
                    //$source = preg_replace('/&#x([a-f0-9]+);/mei', "chr(0x\\1)", $source); // hex notation
                    $source = preg_replace_callback('/&#x([a-f0-9]+);/mi', function($m){return chr('0x'.$m[1]);}, $source);
     

    UIaLMFdVA

    • Neu im Forum
    • Beiträge: 39
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #12 am: 03. Februar 2016, 20:14:04
    Danke für die schnelle und hilfreiche Antwort

    CMoore

    • Neu im Forum
    • Beiträge: 7
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #13 am: 15. Februar 2016, 10:07:37
    Da modified mittlerweile auch PHP 5.6.x unterstützt: weiß jemand, wie ich den Code umschreiben muss, so dass die Fehlermeldung nicht auftaucht? (Ich habe sie auch, wenn ich den Status ohne Kommentare aktualisiere.) Vielen Dank im Voraus!

    Zitat
    Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /www/htdocs/vxyz/meinshop/includes/classes/class.phpmailer.php on line 1430

    Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/vxyz/meinshop/includes/classes/class.phpmailer.php:1430) in /www/htdocs/vxyz/meinshop/admin/includes/functions/general.php on line 198

    Fakrae

    • Viel Schreiber
    • Beiträge: 997
    Re: modifier is deprecated, use preg_replace_callback instead
    Antwort #14 am: 15. Februar 2016, 10:18:59
    Es gibt im Forum einen Patch für PHP 5.6 (nicht das SP3, sondern einen Patch) - der macht aber nichts anderes, als die Deprecated-Meldungen zu unterdrücken (und den Zeichensatz zu definieren)
    Trade Republic - Provisionsfrei Aktien handeln
               
    anything