Hallo, Benedikt,
ich kann den Fehler nicht finden, da ich nicht einmal durchblicke, wie du die Abfragen vonimmst, weil mich dieses absolut unübersichtliche Codemonster überrumpelt:
if(eregi("^([[:alpha:]]*)$",$explorer,$user)) { $werte[0]++; }
elseif
usw.
Was ist überhaupt der Sinn davon? eregi() benötigt folgende Argumente:
eregi ( string Suchmuster, string Zeichenkette [, array regs])
eregi ( "^([[:alpha:]]*)$", $explorer, $user )
Das passt doch gar nicht. Das Suchmuster ist "MSIE" ($explorer), die zu durchsuchende Zeichenkette ist $user, folglich brauchst du diese Regulären Ausdrücke nicht, sondern eher substr_count() (oder strpos() oder strstr()).
if (substr_count($user, $explorer)>0) {
$werte[0]++
} else [
if (substr_count($user, $nav405)>0) {
...
Das Verschachteln ist jedoch suboptimal, siehe http://www.dclp-faq.de/q-stil-waechter.html.
Wenn du schon reguläre Ausdrücke verwendest, dann bitte Perl-kompatible Reguläre Ausdrücke (PREG, http://www.php.net/manual/de/ref.pcre.php). So könntest du dir übrigens die dutzenden Abfragen für Mozilla 4.05-7.0 sparen, die Ausdrücke wären z.B. ~4.(\d){2}~, ~6.\d~ und ~7.\d~. Die bräuchtest du dann nur einmal mit preg_match() anzuwenden.
Grüße,
Mathias
(Fehler vorbehalten. :))