Datenfeld in Array einlesen (preg_match) ?

OrderMax

Grünschnabel
Ich bin gerade dabei ein Blogsystem an meine Bedürfnisse anzupassen.
Leider fehlt dem Blog die Möglichkeit eigene Felder anzulegen.
Also möchte ich ein Texfeld dazu missbrauchen um die Daten dort einzugeben.

Der Inhalt des Feldes sieht in etwas so aus:
PHP:
Name: Kai Uwe
Alter: 29
Telefon: 0197-12321456
Jetzt würde ich gerne dieses Feld in ein Array schreiben um Zugriff auf die einzelne Daten zu haben.

PHP:
$feld[name] 
$feld[alter] 
$feld[telefon]
Ich hab es mit preg_match probiert, aber ich glaube die Regulären Ausdrücke und Schleifen verlangsanem das Script sehr.
Ich möchte das Schlüsselwort nicht extra festlegen um die Felder jederzeit erweitern zu können.
Das was vor dem Doppelpunkt steht, soll als Key genutzt werden und das nach dem Doppelpunkt als Wert.

Gibt es vielleicht eine einfachere Möglichkeit als preg_match?

LG
 
Ich hab es mit preg_match probiert, aber ich glaube die Regulären Ausdrücke und Schleifen verlangsanem das Script sehr.
Ist das nur ein Vermutung oder hast Du das wirklich beobachtet? Ich hatte mal etwas Ähnliches und beides probiert, preg_match und selbst kodiertes Parsing und preg_match war schneller als das selbstgemachte.
Eine Alternative gibt es jedoch: Du kannst die Zeile mit explode() zerlegen und dann auf beide Bestandteile zugreifen.
 
Ganz sicher bin ich mir nicht.
Das Script reagriert in moment etwas träge, kann aber auch an etwas anderem liegen. Die Idee mit explode() ist nicht schlecht und mir lieber als mich mit RegEx zu ägern ;-)
Danke für den Tipp, werde ich mal ausprobieren.
 
Der Inhalt des Feldes sieht in etwas so aus:
Sieht der nur "in etwa" so aus oder ist das der Aufbau?
Wenn der Aufbau so ist, liessen sich die Inhalte mit einfachem exploden und trimmen bestimmen.

edit: Man, bin ich heute 'ne Schlaftablette.
 
Im Grunde ist das der Aufbau. So hatte ich das gerade vor.
Ich denke erst mal Zeilenweise und dann nach dem Doppelpunkt.
 
So schaut aktuell meine Lösung aus:

PHP:
$zeile = explode("\n",$shorttext);
$feld = array();

foreach ($zeile as $line)
{
   $txt  = explode(":",$line);
   $wert = trim($txt[1]);

$feld[$txt[0]] = $wert;
}
 
Zurück