old_explode()
*************


FUNKTION
========

   string *old_explode(string str, string del)


ARGUMENTE
=========

   str - Der String, der aufgespaltet werden soll.
   del - Der String, nach dem str aufgespalten werden soll.


BESCHREIBUNG
============

   Durch Ausschneiden von del wird der String str in ein Array von Strings
   zerlegt. Dieses Array wird anschliessend zuruckgegeben.


RUECKGABEWERT
=============

   Das Array mit den Bestandteilen der Zerlegung.


BEMERKUNGEN
===========

   Das Verhalten von old_explode() entspricht dem dem explode()-Verhalten,
   das in /doc/efun/explode als "altes" Verhalten bezeichnet wird, d.h.
   Leerstrings an Anfang und Ende des zerlegten Strings werden entfernt!


BEISPIELE
=========

   strs = explode( "nimm alles", " "); => strs = ({ "nimm", "alles" })
   strs = explode( "abc", "abc" );     => strs = ({ })
   strs = explode( "ein test", "" );   => strs = ({ "ein test" })
   strs = explode( "a b", "a");        => strs = ({ " b" });


SIEHE AUCH
==========

   explode(E), new_explode(E), efun::explode(E), sscanf(E)
   implode(E), regexplode(E)
