Herbert: split() in PHP 5.4 funkt. doch noch ??

Hallo ich bitte um Hilfe,
ich höre und lese immer dass split() unter PHP 5.4 nicht mehr funktionieren soll.
Ich habe nun bei 1&1 auf PHP 5.4 umfestellt (PHPINFO bringt PHP Version 5.4.12)
In einem Testscript verwende ich weiter split() statt preg_split() und bekomme keine Warnung oder Fehler.

$schule_string = "Frankreich - Paris";
$split_kursort = split('-',$schule_string);
$kursland      = $split_kursort[0];
$kursort       = $split_kursort[1];

In $kursland steht Frankreich, in $kursort steht Paris
Also so wie seit PHP 4

Gibt es schon Erkenntnisse warum split() weiter funktioniert;
bzw. wie ist es mit den anderen Befehlen die nicht mehr funktionieren sollen.

Vielen Dank
Herbert

  1. Tach!

    ich höre und lese immer dass split() unter PHP 5.4 nicht mehr funktionieren soll.

    Das PHP-Handbuch weiß nichts von einem Nicht-mehr-Funktionieren, auch unter 5.5 noch nicht. Es steht da auch in den Anhängen nichts, das ein Verschwinden rechtfertigen würde. Die Funktionen der ereg-Extension sind lediglich seit 5.3 deprecated.

    Ich habe nun bei 1&1 auf PHP 5.4 umfestellt (PHPINFO bringt PHP Version 5.4.12)
    In einem Testscript verwende ich weiter split() statt preg_split() und bekomme keine Warnung oder Fehler.

    Eine E_DEPRECATED-Meldung solltest du sehen - bei entsprechendem error_reporting.

    Gibt es schon Erkenntnisse warum split() weiter funktioniert;
    bzw. wie ist es mit den anderen Befehlen die nicht mehr funktionieren sollen.

    Siehe die jeweiligen Migrating-from-Abschnitte in den verlinkten Anhängen.

    dedlfix.

    1. Vielen Dank für den Hinweis
      Herbert

      Tach!

      ich höre und lese immer dass split() unter PHP 5.4 nicht mehr funktionieren soll.

      Das PHP-Handbuch weiß nichts von einem Nicht-mehr-Funktionieren, auch unter 5.5 noch nicht. Es steht da auch in den Anhängen nichts, das ein Verschwinden rechtfertigen würde. Die Funktionen der ereg-Extension sind lediglich seit 5.3 deprecated.

      Ich habe nun bei 1&1 auf PHP 5.4 umfestellt (PHPINFO bringt PHP Version 5.4.12)
      In einem Testscript verwende ich weiter split() statt preg_split() und bekomme keine Warnung oder Fehler.

      Eine E_DEPRECATED-Meldung solltest du sehen - bei entsprechendem error_reporting.

      Gibt es schon Erkenntnisse warum split() weiter funktioniert;
      bzw. wie ist es mit den anderen Befehlen die nicht mehr funktionieren sollen.

      Siehe die jeweiligen Migrating-from-Abschnitte in den verlinkten Anhängen.

      dedlfix.

      1. Om nah hoo pez nyeetz, Herbert!

        Ich finde gut, dass du dem Antwortenden mitteilst, dass der Beitrag dir weiter geholfen hat. Das ist leider nicht üblich, umso mehr fällt das positiv auf. Weniger gut finde ich, dass du den kompletten Antwortbeitrag zitierst. Das ist nicht notwendig. Nach einer Anmeldung lässt sich das Forum so einstellen, dass man den vollständigen Thread "in einem Rutsch" lesen kann, falls man das möchte.

        Vielleicht ist ja in der Zukunft mit weiteren Beiträgen (Fragen und Antworten) deinerseits zu rechnen.

        Matthias

        --
        1/z ist kein Blatt Papier.

  2. Moin!

    ich höre und lese immer dass split() unter PHP 5.4 nicht mehr funktionieren soll.

    Wer schreibt sowas?

    Ich habe nun bei 1&1 auf PHP 5.4 umfestellt (PHPINFO bringt PHP Version 5.4.12)
    In einem Testscript verwende ich weiter split() statt preg_split() und bekomme keine Warnung oder Fehler.

    split() gehört zur Gruppe der ereg_*-Funktionen, die schon seit langem als "nicht schön" eingestuft wurden und die man deshalb vermeiden sollte.

    $schule_string = "Frankreich - Paris";
    $split_kursort = split('-',$schule_string);
    $kursland      = $split_kursort[0];
    $kursort       = $split_kursort[1];

    Insbesondere sollte man split() vermeiden, wenn man keinen regulären Ausdruck benötigt, um einen String zu spalten. So wie bei dir. Dort würde explode() genauso gut funktionieren, denn dein String ist konstant der Bindestrich. Und das würde sogar schneller sein, weil die Regex-Engine nicht angeworfen wird.

    Insofern gibts gleich zwei Gründe, split() zu vermeiden.

    - Sven Rautenberg

    1. Vielen Dank für den Hinweis
      Herbert

      Moin!

      ich höre und lese immer dass split() unter PHP 5.4 nicht mehr funktionieren soll.

      Wer schreibt sowas?

      Ich habe nun bei 1&1 auf PHP 5.4 umfestellt (PHPINFO bringt PHP Version 5.4.12)
      In einem Testscript verwende ich weiter split() statt preg_split() und bekomme keine Warnung oder Fehler.

      split() gehört zur Gruppe der ereg_*-Funktionen, die schon seit langem als "nicht schön" eingestuft wurden und die man deshalb vermeiden sollte.

      $schule_string = "Frankreich - Paris";
      $split_kursort = split('-',$schule_string);
      $kursland      = $split_kursort[0];
      $kursort       = $split_kursort[1];

      Insbesondere sollte man split() vermeiden, wenn man keinen regulären Ausdruck benötigt, um einen String zu spalten. So wie bei dir. Dort würde explode() genauso gut funktionieren, denn dein String ist konstant der Bindestrich. Und das würde sogar schneller sein, weil die Regex-Engine nicht angeworfen wird.

      Insofern gibts gleich zwei Gründe, split() zu vermeiden.

      • Sven Rautenberg