txt-Datei mit file() laden - array search liefert immer null false
Ich hab ein kleines Problem, vielleicht kann mir da jem. helfen und zwar habe ich eine txt-Datei im folgenden Format
das ist eine Invetardatei, die soll nun mit PHP ausgelesen werden und die Werte in eine Datenbank habe die txt eingelesen und will nun nach einem Stichwort suchen, aber egal wie ich es mache gibt er mir null oder false zurück
und zwar hab ich mir das wie folgt gedacht:
1) Ich öffne erst den Ordner
2) Lese die Dateinamen aus,
3) Schreibe die in die Hostnamen Tabelle
4) Dann lese ich die Tabelle aus
5) Speichere die Datei von dem Hostnamen in ein array
6) Durchsuche das array nach der Zeile "######## Prozessor #######" dann weiß ich an welcher Stelle das steht im array zB Stelle 2 dann weiß ich das der CPUName in array[3] steht und die Frequenz in array[4] usw. usw. 7) Dann speicher ich alles in eine Temp Tabelle und danach wenn alles ausgelesen ist wird die Temp Tabelle ausgelesen und geguckt wo welcher Prozessor gleich ist, Speicher etc, und ersetzt das durch die id's usw.
das skript zum auslesen sieht wie folgt aus..
Das problem ist das $cpu_i und $mainboard_i eine Null haben bzw false, also die funktionieren nicht... deswegen gibt er mir immer den Prozessor aus, also Zeile 1 und 2 weil ich ja +1 und +2 sage aber die Zählvariablen wo er die Stelle im array sucht, gibst nicht, ist leer.. was kann ich da machen?
Hat jem. ein Tipp oder eine andere Möglichkeit?
Vielen Dank schonmal im Vorraus.
Gruß Tobias
########## PROZESSOR ##########Name: AMD Athlon(tm) XP 2400+CurrentClockSpeed: 2002########## COMPUTERMODELL ##########Manufacturer: VIA Technologies, Inc.Model KM266-8235########## LOGON USER ##########UserName: TL-ARBEIT\Tobias########## OS ##########SystemStartupOptions: "Microsoft Windows XP Professional" /noexecute=optin /fastdetect########## BIOS ##########BIOSVersion: KM266 - 42302e31,Phoenix - AwardBIOS v6.00PG,Phoenix-Award BIOS v6.00PG
das ist eine Invetardatei, die soll nun mit PHP ausgelesen werden und die Werte in eine Datenbank habe die txt eingelesen und will nun nach einem Stichwort suchen, aber egal wie ich es mache gibt er mir null oder false zurück
und zwar hab ich mir das wie folgt gedacht:
1) Ich öffne erst den Ordner
2) Lese die Dateinamen aus,
3) Schreibe die in die Hostnamen Tabelle
4) Dann lese ich die Tabelle aus
5) Speichere die Datei von dem Hostnamen in ein array
6) Durchsuche das array nach der Zeile "######## Prozessor #######" dann weiß ich an welcher Stelle das steht im array zB Stelle 2 dann weiß ich das der CPUName in array[3] steht und die Frequenz in array[4] usw. usw. 7) Dann speicher ich alles in eine Temp Tabelle und danach wenn alles ausgelesen ist wird die Temp Tabelle ausgelesen und geguckt wo welcher Prozessor gleich ist, Speicher etc, und ersetzt das durch die id's usw.
das skript zum auslesen sieht wie folgt aus..
$filename=$pfad.$Hostname_Name.".txt";
##
## Geht nicht mit file(), egal ob mit array_search, in_array oder array_keys wird immer null od. false zurückgegeben
##
$array = file($filename);
##
## Da es mit file() nicht funktionierte dachte ich, lese ich das so ein mit fgets() funktioniert auch nicht!
##
$i=0;
$handle = fopen($filename, "r");
while(!feof($handle))
{
$array[$i]=fgets($handle, 4096);
$i++;
}
##
## Mit print_r wird mir das Array aber richtig angezeigt!
##
print_r($array);
##
## Beide $cpu_i liefern eine null od. false egal ob mit fgets oder file eingelesen
##
# $cpu_i = array_search("########## PROZESSOR ##########", $array);
# $cpu_i = array_search('AMD', $array);
##
## Wenn ich selber $array2[5]="Prozessor" mache und nach Prozessor suche findet er das?! Liegt wohl an file() ?
##
# if($cpu_i != false) echo $cpu_i; else echo "kein wert für cpu i";
$CPU_Name = $array[$cpu_i + 1];
$CPU_Name = str_replace("Name: ", "", $CPU_Name);
$CPU_Speed = $array[$cpu_i + 2];
$CPU_Speed = str_replace("CurrentClockSpeed: ", "", $CPU_Speed);
echo $CPU_Name."
".$CPU_Speed."
";
Das problem ist das $cpu_i und $mainboard_i eine Null haben bzw false, also die funktionieren nicht... deswegen gibt er mir immer den Prozessor aus, also Zeile 1 und 2 weil ich ja +1 und +2 sage aber die Zählvariablen wo er die Stelle im array sucht, gibst nicht, ist leer.. was kann ich da machen?
Hat jem. ein Tipp oder eine andere Möglichkeit?
Vielen Dank schonmal im Vorraus.
Gruß Tobias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42199
Url: https://administrator.de/contentid/42199
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
hallo,
sorry kenn mich in php ni sooo gut aus, aber muss ein array in php ni erst als array initialisiert werden?? also $array = new array() oder so ähnlich. oder verstehe ich dich jetzt falsch??
mfg godlike P
sorry kenn mich in php ni sooo gut aus, aber muss ein array in php ni erst als array initialisiert werden?? also $array = new array() oder so ähnlich. oder verstehe ich dich jetzt falsch??
mfg godlike P
hallo,
sorry kenn mich in php ni sooo gut aus, aber
muss ein array in php ni erst als array
initialisiert werden?? also $array = new
array() oder so ähnlich. oder verstehe
ich dich jetzt falsch??
mfg godlike P
sorry kenn mich in php ni sooo gut aus, aber
muss ein array in php ni erst als array
initialisiert werden?? also $array = new
array() oder so ähnlich. oder verstehe
ich dich jetzt falsch??
mfg godlike P
ne, das ist nur in basic oder ähnlichen so. ;) edit: new hat in PHP auch eine ganz andere Bedeutung, das erzeugt eine neue Instanz einer Klasse, siehe http://de2.php.net/class
Die 0 kommt wohl daher, dass "########## PROZESSOR ##########" in der ersten Zeile der txtdatei steht, deshalb also den Index 0 hat.
"$cpu_i = array_search("########## PROZESSOR ##########", $array); "
danach ist $cpu_i == 0.
"if($cpu_i != false)"
das gleiche mit !== und es könnte klappen.
file() sollte eigentlich gehen, sicher, dass $filename richtig ist? Zum Debuggen kann error_reporting(E_ALL) auch nicht schaden. ;)