explode?

sd12

Legendäres Mitglied
Ich habe auf einem API folgende Antwort:
QUOTE Status:100 id:146679 dlrid:120587


Wie verdammt nochmal krieg ich das auseinander, dass ich es als als einzelne Variablen nutzen kann?
 
Mit .NET würde ich das wohl erst mit Array.Split(" "C) an den Leerzeichen in einen Array auftrennen, dann die Einzelbestandteile analog zerlegen (oder direkt mit Substring / IndexOf).

Oder gleich mit RegEx nach den Einzelteilen suchen.
 
@bendecho
Ja, aber ich bin zu doof das Argument dazu zu schreiben...

@jAuer
.NET verstehe und behersche ich nicht!
 
QUOTE (sd12 @ Di 9.10.2007, 15:54).NET verstehe und behersche ich nicht!

Das Programmierproblem ist unabhängig von der Sprache.

Es gibt im wesentlichen zwei Möglichkeiten: Entweder sich mit RegEx schrittweise vorhangeln oder mit Split (irgendetwas wird es analog in jeder Programmiersprache geben) aus dem String an den ' ' einen Array machen und dort jedes Element erneut entlang der ':' in Arrays zerlegen.

Welche Alternative aber tatsächlich sinnvoll ist, läßt sich so kaum sagen: Wenn der Input eine Million solcher Zeilen hat, dann ist ein Array-Konstrukt etwas heftig. :D

PS: In bezug auf RegEx: Grobform:


QUOTE \b(\w+?):(\w+?)\b


für .NET - RegEx (ungetestet), da gibt es dann ein Objekt, das einen Array aller Fundstellen zurückgibt.

Hehe, Smilies sollte ich da deaktivieren - das versteht die Forensoftware nicht.
 
Also mit PHP wuerde das so in etwa funktionieren:

CODE
$input = "Status:100 id:146679 dlrid:120587";
$output = array ();
foreach (split (' ', $input) as $row) {
list ($key, $value) = split (':', $row);
$output[$key] = $value;
}
print_r ($output);



Cheers,
Den.
 
Hi

Also, wenn es sich um PHP handelt hab ich hier ne kleine Funktion:

CODE
function string_between($string,$starttag,$endtag){
$ret = explode($starttag,$string,2);
$ret2 = explode($endtag,$ret[1],2);
return $ret2[0];
}



Anwendung wie folgt:

CODE
$input = "Status:100 id:146679 dlrid:120587";

$status = string_between($input,"Status:"," ");
$id = string_between($input,"id:"," ");
$dlrid = string_between($input,"dlrid:","\n");



Ich hoffe, ich konnte weiterhelfen.
 
CODE
$x = 'Status:100 id:146679 dlrid:120587';
parse_str(str_replace(':','=',str_replace(' ','&',$x)));

echo $Status;
echo $id;
echo $dlrid;



für die die es kurz mögen
smile.gif
 
für die, dies noch kürzer mögen:

CODE
preg_match_all('/(\w+):(\d+)/', 'Status:100 id:146679 dlrid:120587', $matches);
print_r($matches)


 
QUOTE (jAuer @ Di 9.10.2007, 17:13) Es gibt im wesentlichen zwei Möglichkeiten: Entweder sich mit RegEx schrittweise vorhangeln oder mit Split (irgendetwas wird es analog in jeder Programmiersprache geben) aus dem String an den ' ' einen Array machen und dort jedes Element erneut entlang der ':' in Arrays zerlegen.

@jAuer

Ein Array, welches durch explode entstanden ist kann man in PHP nicht nochmal "exploden".

Was Du mit den Programmiersprachen sagt, ist richtig. ABER dazu muss man die benötigten Befehle kennen...

@all
Vielen Dank für die vielen Lösungsvorschläge.
 
Zurück
Oben