Werte auslesen
ThomasNT4
- php
0 ThomasNT40 ThomasNT40 Candid Dauth0 Tobias Kloth0 ThomasNT4
Halloechen
ich braeuchte mal eure Hilfe für folgende Sache
Ich möchte aus einer Textdatei den Wert zwischen den Hochkommas auslessen und dann mit dem nächsten Wert addieren...
192.168.20.5 [17/Mar/2004:19:10:37 +0100] "GET /images/button.htm_txt_shop_o.gif HTTP/1.1" 200 Traffic:'2242' "http://singlecharts.microfun.de/formular1.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF)"
in der nächste Zeile steht dann das selbe nur eben mit einem anderen Wert
192.168.20.5 [17/Mar/2004:19:10:37 +0100] "GET /images/button.htm_txt_shop_o.gif HTTP/1.1" 200 Traffic:'4800' "http://singlecharts.microfun.de/formular1.htm" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF)"
am Ende soll dann die Gesamtsumme raus kommen...
ich denke es sollte mit explode gehen nur hab ich leider nicht soviel Ahnung
die Datei die ausgelesen werden soll heisst access.txt
Im Endeffekt moechte ich nur den gesatmen Traffic zaehlen und mit einem Echo Befehl ausgeben
Ich vergas noch zu erwähnen das sich ungefähr in 24 Stunden rund 20000 Werte darin befinden also muesste die Datei bis am Ende nach den Werten in Hochkomma durchsucht werden.
Hallo du da draußen,
Ich würde es mit einem regulären Ausdruck probieren:
$reg_exp = preg_match_all("/^.*'(.*)'.*$/", $datei);
Wobei $datei natürlich deine Datei oder was auch immer enthält, aus der du die Teile auslesen willst.
Nun hast du deine Werte in den Anführungszeichen, und zwar dort:
$reg_exp[0][1]
$reg_exp[1][1]
$reg_exp[2][1]
$reg_exp[3][1]
$reg_exp[4][1]
...
Und die zu addieren dürfte kein Problem sein.
Ungetestet -- müsste aber funktionieren.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
Candid Dauth (Dogfish)
Hallo Candid,
$reg_exp = preg_match_all("/^.*'(.*)'.*$/", $datei);
ggf. hinter den Sternchen (zumindest den ersten zweien) eine Fragezeichen ergänzen oder den Flag 'U' setzen, um den Ausdruck auf "ungierig" zu setzen (siehe auch http://dclp-faq.de/q/q-regexp-gierig.html) - alternativ kann man auch das Sternchen in der Klammer durch ein Plus ersetzen.
Nun hast du deine Werte in den Anführungszeichen, und zwar dort:
$reg_exp[0][1]
$reg_exp[1][1]
nicht wirklich - preg_match_all erwartet (mindestens) 3 Parameter, wovon im 3. die "Treffer" landen (->http://de3.php.net/preg_match_all) - in $reg_exp steht dann drin, wieoft der Ausdruck "erfolgreich" war.
Grüße aus Nürnberg
Tobias
Ich hab's
<?php
$datei = file('access.txt'); //Datei einlesen
$traffic = 0; //Startwert für $traffic
foreach($datei as $zeile){ //Array durchlaufen
$teile = explode("'",$zeile); //explode anwenden
$traffic += $teile[1]; //$teile[1] zu $traffic dazuzählen
}
echo $traffic;
?>
nur muss die Endzahl noch durch 1024 geteilt werden... um die MB Zahl raus zu bekommen
Hallo Thomas,
echo $traffic;
nur muss die Endzahl noch durch 1024 geteilt werden... um die MB Zahl raus zu bekommen
du könntest auch <eigenwerbung>http://www.to-kl.de/codeschnipsel/php/funktionen/dateigroesse.html</eigenwerbung> verwenden um die Zahl zu formatieren.
Grüße aus Nürnberg
Tobias
Haben fertig
$datei = file('access.txt'); //Datei einlesen
$traffic = 0; //Startwert für $traffic
foreach($datei as $zeile){ //Array durchlaufen
$teile = explode("'",$zeile); //explode anwenden
$traffic += $teile[1]/1024000; //$teile[1] zu $traffic dazuzählen
}
echo $traffic;
?>
DA N K E Tobias
Herzliche Grueße aus dem schönen Duisburg
und besten Dank
Hallo du da drinnen -)))
Ich muss nur den Wert haben der in den Hochkommas steht...
wäre es nicht sinnvoll dieses mit einem explode zu machen
Hallo Thomas,
Ich muss nur den Wert haben der in den Hochkommas steht...
wäre es nicht sinnvoll dieses mit einem explode zu machen
das dürfte auch gehen (sofern sonst nirgends ein ' vorkommt) - aber was hindert dich daran, es einfach mal auszuprobieren, oder hängt es irgendwo? Wenn ja, wo?
Grüße aus Nürnberg
Tobias
Ist das geil hier, nette Leute, nette Mails (musste ich mal los werden)
Also es kommt in der Datei nur folgendes vor...
192.168.20.5 [17/Mar/2004:19:51:45 +0100] "GET /layout/templates/css-blau.css HTTP/1.1" 404 Traffic:'1431' "http://domain.de/unten.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF)"
Wie zu sehen ist steht nur bei Traffic: der Wert im Hochkomma...
Aehh ausprobieren, ja klar aber wie sag ich dem Script das er die Datei access.txt auslesen soll ??????
Hallo Thomas,
192.168.20.5 [17/Mar/2004:19:51:45 +0100] "GET /layout/templates/css-blau.css HTTP/1.1" 404 Traffic:'1431' "http://domain.de/unten.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; i-NavFourF)"
Wie zu sehen ist steht nur bei Traffic: der Wert im Hochkomma...
woher willst du wissen, dass die Browserkennung nicht ' enthält? (ok, wenn man es mit explode löst, ist es egal, da dann eben das Array etwas länger wird).
Aehh ausprobieren, ja klar aber wie sag ich dem Script das er die Datei access.txt auslesen soll ??????
Sag doch gleich, dass es schon daran scheitert :-)
Ich vermute mal, dass in jeder Zeile der Datei eine solche wie du oben gepostet hast - dann kannst du mit
$datei = file('access.txt'); // ->http://de2.php.net/file
die Datei in ein Array lesen - dieses durchläufst du dann mit foreach (->http://de.php.net/foreach). Dabei wendest du auf jedes Element explode an (->http://de2.php.net/explode) und liest das zweite Element des erhaltenen Arrays aus:
$datei = file('access.txt'); //Datei einlesen
$traffic = 0; //Startwert für $traffic
foreach($datei as $zeile){ //Array durchlaufen
$teile = explode("'",$zeile); //explode anwenden
$traffic += $teile[1]; //$teile[1] zu $traffic dazuzählen
}
(ungetestet)
Grüße aus Nürnberg
Tobias
WOW bist du drauf -)) SUUUUUUUUUPER
nur wo ist der echo Befehl wo der Wert drin steht ????