Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichenkette aufsplitten, aber wie??
Hallo!
Hab hier ein mehr oder weniger großes Problem.
Ich hab ein Programm namens cnistnet und will dessen ausgabe in
ein Array oder Variablen umleiten. Die Ausgabe des Programms
sieht folgendermaßen aus:
cnistnet -a 192.168.1.5 192.168.6.55 --delay 7.000 --bandwidth 57
cnistnet -a 192.1.1.1 192.168.44.45 --delay 2.000 --bandwidth 5555
cnistnet -a 192.168.2.52 192.168.4.54 --delay 5.500
Nun ist es so das ich gerne die IP´s, den Wert nach delay und nach Bandwidth
in ein Array speichern möchte. es variert aber das heisst die Stellen
die eine IP lang ist kann ja 1.1.1.1 oder 111.111.111.111 im längsten fall sein.
Außerdem muss nicht immer beides also bandwidth und delay angegeben sein
es kann auch nur eins von beiden wie oben angegeben sein.
Wie im Beispiel ersichtlich ist die Ausgabe mehrzeilig das heisst falls
es sowas gibt dann ein Mehrdimennsionales Array, oder??
Weis jemand wie man das anstellen könnte???
MFG
Hannes Bischof
die Ip steht immer an der selben stelle, einfach am leerzeichen splitten und die pos 3/4 verwenden.
für delay würde ich mittels $arr=split("delay",string) splitten und dann alles bis zum nächsten leerzeichen bzw zeilenende benutzen, bandwidth dito.
Hallo!
Erstmal danke für den Tipp.
Was meinst du mit pos 3/4 verwenden??
Und nochwas wie splitte ich bis zum nächsten
Leerzeichen??
MFG
Hannes Bischof
versuch's so:
$str="cnistnet -a 192.168.1.5 192.168.6.55 --delay 7.000 --bandwidth 57";
$arr=split(" ",$str);
echo "erste IP:".$arr[2]." zewite IP:".$arr[3];
echo "<br>";
$arr=split("delay",$str);
$arr=split(" ",$arr[1]);
echo "delay: ".$arr[1]."<br>";
$arr=split("--bandwidth",$str);
$arr=split(" ",$arr[1]);
echo "bandwidth: ".$arr[1];
Ausgabe:
erste IP:192.168.1.5 zewite IP:192.168.6.55
delay: 7.000
bandwidth: 57
Hallo!
Danke das hilft mir sehr weiter.
Dann spiel ich mal ein bisschen damit rum.
THX
Hannes
PS: wie könnte man das noch lösen da es ja mehrere Zeilen sind, gibts sowas
wie ein mehrdimensionales Array???
Mit grep -c [string] kann ich zählrn wieviel Zeilen die Ausgabe hat so könnte
ich schonmal immer eins addieren um die Zeilen durchzumachen!
du kannst die ausgane in eine datei umleiten und dann mit fer funktion file() einlesen. du erhälst einn array mit jeweils einem eintrag pro zeile:
$zeil_arr=file($datei);
for ($i=0;$i<count($zeil_arr);$i++) {
$str=$zeil_arr[$i];
... und dann wie gehabt... :D
}
Hallo!
Zält count die Zeilen in einer Datei??
MFG
Hannes Bischof
mit count($arr) wird die anzahl der arrayelemente ermittelt
Ahhh habs verstanden.
Danke müsste jetzt alles gehen.
BIG THX
MFG
Hannes Bischof
Hallo!
Hab nun ein neues Problem. Hab ne Variable in der ungefähr folgendes drin steht:
0 0 0 0 5346 0 564 8 6
so nun will ich ein Array haben in dem folgende Elemente sind:
0,0,0,0,5346,0,564,8,6
die leerzeichen zwischen den Zahlen können variieren aber es ist immer min. 1 Leerzeichen dazwischen. Kann man das irgendwie aufteilen???
MFG
Hannes Bischof
dein neues problem ist dein altes problem... :rolleyes:
versuch einfach am leerzeichen zu splitten $arr=split(" ","0 0 2 8");
Hallo!
Habs schon probiert aber dann bekomm ich ein array wo 5 elemente mit leerzeichen gefüllt sind dann die 0 dann wieder 3 Leerzeichen usw...
Ich will halt das nur die Zahlenketten jeweils ins arry kommen!
MFG
Hannes Bischof
$arr=preg_split("/\s{1,}/","0 0 3 5 8 12 23");
das funxt.
wenn du wissen willst wie solltest du dich über reguläre Ausdrücke informieren. Ich habe hier oben die von perl benutzt.:cool:
hmm nicht ganz, er speichert mir nun die Zeichenkette in das erste element des Arrays.
MFG
Hannes Bischof
PS: werd erst morgen wieder dazu kommen hier im Forum zu antworten! THX
in dem Ausdruck preg_split("/\s{1,}/","0 0 3 5 8 12 23") hat das Forum den backslash vor dem 's' gefressen...
:o
Böses Forum ißt da einfach so Zeichen weg*g*
Hat funktioniert. Danke!!!!
THX
MFG
Hannes Bischof
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.