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: Deprecated: Function split() is deprecated

    vince

    • Neu im Forum
    • Beiträge: 44
    Deprecated: Function split() is deprecated
    am: 08. März 2012, 16:29:53
    Hi zusammen,

    heute habe ich wieder mal seit längerem wieder an meinem Test-Shop was geändert - wenn ich nun ein Produkt aufrufe oder in eine Kategorie wechsel erhalte ich oben folgende Fehlermeldung:

    Code: PHP  [Auswählen]
    Deprecated: Function split() is deprecated in /home/hotelsu/www/sandbox/jet/templates/jetv2/source/boxes/categories.php on line 83

    Was ist das? Bzw. wie krieg ich das wieder hin?

    Danke
    LG

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

    jannemann

    • modified Team
    • Beiträge: 6.288
    • Geschlecht:
    AW: Deprecated: Function split() is deprecated
    Antwort #1 am: 08. März 2012, 17:41:03
    Welche PHP Version setzt du ein? Wahrscheinlich ist diese zu alt und unterstützt diese Funktion nicht mehr.

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Deprecated: Function split() is deprecated
    Antwort #2 am: 08. März 2012, 17:42:16
    split() ist eine alte Funktion. Diese lässt sich aber leicht in das moderne preg_split() umwandeln. Schau einfach was dort in Zeile 83 steht und schreib es um. Ich gebe Dir ein Beispiel dann solltest Du erkennen, was zu tun ist.

    Alt
    Code: PHP  [Auswählen]
    $array = split('(1|2|3|4|5)', $string);

    Neu
    Code: PHP  [Auswählen]
    $array = preg_split('/(1|2|3|4|5)/', $string);

    Solange in dem alten Argument von Split kein / vorkommt, kann Du / / als "Umrandung" nehmen. Es muss einfach nur ein Zeichen sein, der im Rest nicht vorkommt und Alphanumerisch darf es auch nicht sein (kein a-z oder 0-9). Also möglich wäre auch
    Code: PHP  [Auswählen]
    $array = preg_split('#(1|2|3|4|5)#', $string);
    oder
    Code: PHP  [Auswählen]
    $array = preg_split('~(1|2|3|4|5)~', $string);
    oder
    Code: PHP  [Auswählen]
    $array = preg_split('%(1|2|3|4|5)%', $string);
    .

    Sollte das Split-Argument ein simpler Text sein
    Code: PHP  [Auswählen]
    $array = split(':', $string);
    kann man auch auf explode() zurückgreifen
    Code: PHP  [Auswählen]
    $array = explode(':', $string);

    Welche PHP Version setzt du ein? Wahrscheinlich ist diese zu alt und unterstützt diese Funktion nicht mehr.
    Ich denke mal PHP 5.3 und aufwärts. ;) Aber er könnte auch das E_DEPRECATED abschalten in der error_reporting().

    Grüße,
    Tekin
    Viele Grüße,
    Tekin Birdüzen - Zend Certified Engineer

    vince

    • Neu im Forum
    • Beiträge: 44
    Re: Deprecated: Function split() is deprecated
    Antwort #3 am: 08. März 2012, 17:57:18
    Danke

    habs mit dem preg_split hinbekommen musste dann nur noch die beiden / einfügen das wars :)

    Für alle die auch so ein Problem haben, meine Lösung:

    template/source/boxes/categories.php => Line 83

    Code: PHP  [Auswählen]
    $id = preg_split('/_/', $cPath);

    LG

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Deprecated: Function split() is deprecated
    Antwort #4 am: 08. März 2012, 18:01:30
    Code: PHP  [Auswählen]
    $id = preg_split('/_/', $cPath);
    Da es ein simples Zeichen ist, wäre es erheblich schneller und somit effektiver mit explode() zu arbeiten. Was aber bei einem normalen Shop wohl eher nicht auffällt.
    Code: PHP  [Auswählen]
    $id = explode('_', $cPath);

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Deprecated: Function split() is deprecated
    Antwort #5 am: 08. März 2012, 18:49:58
    Seit August 2009! ist das im modified eCommerce Shopsoftware Template schon mit explode gefixt.  ;-)

    web4design

    • Experte
    • Beiträge: 1.093
    Re: Deprecated: Function split() is deprecated
    Antwort #6 am: 08. März 2012, 18:53:58
    Zitat
    Aber er könnte auch das E_DEPRECATED abschalten in der error_reporting().
    :-O

    Ursachen beheben nicht umgehen, hehe

    derheiko

    • Fördermitglied
    • Beiträge: 362
    Re: Deprecated: Function split() is deprecated
    Antwort #7 am: 20. April 2012, 08:31:11
    Guten morgen zusammen,

    ich habe es ähnlich, in 2 Versandmodulen von mir:

    Code: PHP  [Auswählen]
        for ($i=1; $i<=$this->num_dhl; $i++) {
            $countries_table = constant('MODULE_SHIPPING_DHL_COUNTRIES_' . $i);
            $country_zones = split("[,]", $countries_table);
            if (in_array($dest_country, $country_zones)) {
              $dest_zone = $i;
              break;
            }
          }

    Code: PHP  [Auswählen]
    /**
     * class methods
     */

        function quote($method = '') {
          global $order, $shipping_weight, $shipping_num_boxes;

          $dest_country = $order->delivery['country']['iso_code_2'];
          $dest_zone = 0;
          $error = false;

          for ($i=1; $i<=$this->num_sped; $i++) {
            $countries_table = constant('MODULE_SHIPPING_SPED_COUNTRIES_' . $i);
            $country_zones = split("[,]", $countries_table);
            if (in_array($dest_country, $country_zones)) {
              $dest_zone = $i;
              break;
            }
          }

    [/code]

    Tausche ich das "split"

    Code: PHP  [Auswählen]
            $country_zones = split("[,]", $countries_table);

    dann durch ein "preg_split"

     
    Code: PHP  [Auswählen]
           $country_zones = preg_split("[,]", $countries_table);

    oder durch ein "explode"

     
    Code: PHP  [Auswählen]
           $country_zones = explode("[,]", $countries_table);

    aus?

    Oder doch ganz anders?

    Vielen lieben Dank vorab für die Hilfe ;)

    Hetfield

    • modified Team
    • Beiträge: 834
    Re: Deprecated: Function split() is deprecated
    Antwort #8 am: 20. April 2012, 09:59:06
    Etwas anders mit explode().
    Code: PHP  [Auswählen]
    $country_zones = explode(",", $countries_table);
    Ist aber auch in anderen Modulen im modified eCommerce Shopsoftware zu finden.

    MfG Hetfield  8-)

    derheiko

    • Fördermitglied
    • Beiträge: 362
    Re: Deprecated: Function split() is deprecated
    Antwort #9 am: 20. April 2012, 20:34:03
    Danke schön, das wars ;)

    Angeal

    • Fördermitglied
    • Beiträge: 410
    • Geschlecht:
    Re: Deprecated: Function split() is deprecated
    Antwort #10 am: 04. März 2014, 14:27:44
    Ich muss dieses Thema nochmal aufgreifen.

    Folgender string

    Code: PHP  [Auswählen]
    $tz_table = split("[:,]" , $tz_cost);

    PHP 5.3

    Es funktioniert kein preg_split, kein explode und auch kein str_split.

    Jemand eine Idee?

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Deprecated: Function split() is deprecated
    Antwort #11 am: 04. März 2014, 15:28:39
    Code: PHP  [Auswählen]
    $tz_table = preg_split("/[:,]/", $tz_cost);

    Angeal

    • Fördermitglied
    • Beiträge: 410
    • Geschlecht:
    Re: Deprecated: Function split() is deprecated
    Antwort #12 am: 04. März 2014, 17:50:01
    Besten Dank. Hat geklappt :)

    Sascham2001

    • Neu im Forum
    • Beiträge: 1
    Re: Deprecated: Function split() is deprecated
    Antwort #13 am: 31. Mai 2015, 13:28:47
    hi
    habe ein ähnliches problem. Eine Service seite wurde auf einen neuen Server übertragen. Die Scheind allerdings mit ner neueren PHP Version zu laufen und gibt momentan sehr viele Fehler.
    habe jetzt schon split durch pred_split ersetzt und habe damit auch schone einige Felhler behoben. Zwei Fehler bleiben troztdem einer wäre
    Warning: preg_split() [function.preg-split]: No ending delimiter ';' found in xxx

    Ich hoffe ihr könnt mir helfen