molily: Probleme bei Identifierung von NN- und Opera-Browser

Beitrag lesen

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. :))