Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Re: Re: Short and Sweet Browser Detection

by KM (Priest)
on Jun 07, 2002 at 19:09 UTC ( #172621=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Short and Sweet Browser Detection
in thread Short and Sweet Browser Detection

Just have the keys be what the USER_AGENT string will be. No looping, that's what exists() is for.


  • Comment on Re: Re: Re: Short and Sweet Browser Detection

Replies are listed 'Best First'.
Re(4):Short and Sweet Browser Detection
by Dog and Pony (Priest) on Jun 07, 2002 at 19:16 UTC
    Then you would have to have the complete USER_AGENT string for each possible browser, which isn't really viable. Each string contains (usually) information about both the browser name, version and the OS. That is a lot of strings.


    Ah, the regexp; the good old hammer. Tell you what. I spent 30 seconds looking in my web log (which does *not* get any significant amount of traffic), and just from this fast survey, I could pick out this list easily:

    Mozilla/5.001 (windows; U; NT4.0; en-us) Gecko/25250101 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; DTS Agent Mozilla/3.0 (compatible; Indy Library) Mozilla/5.0 Galeon/1.2.1 (X11; Linux i686; U;) Gecko/20020417 Mozilla/4.78 [en] (X11; U; Linux 2.4.7-10 i686) Mozilla/4.5 (compatible; iCab 2.7.1; Macintosh; I; PPC) Mozilla/5.0 (Linux 2.4.7-10 i586; U) Opera 6.0 [en] Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.01 [en]
    Sure looks easy to write a regexp that picks out the important part, yes? When should we pick something inside the paranthesis? Outside? What if the paranthesis doesn't close? Is it MSIE or Opera? I'm sure it is easy; please show me.

    You have moved into a dark place.
    It is pitch black. You are likely to be eaten by a grue.
      In 30 seconds I mooted the "challenge" (as you said in CB) by locating HTTP::BrowserDetect So, someone already did the hard work so no wheel reinventing needs to be done.


      And that's why we have regular expression, and modules which do these things. Get what you need from the USER_AGENT string and match in your keys. Instead of trying to nay-say suggestions, why don't think think of the whole picture of what is available to be done. So, this guy should keep looping through all the user agents? That's absurd.
      (my $user_agent = $ENV{USER_AGENT}) =~ s!<whatever>!!; if (exists $user_agents->{$user_agent}) { # foo } else { # bar }
      When you are trying to think outside the box, remember to look at the box.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://172621]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (9)
As of 2018-06-18 16:15 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (110 votes). Check out past polls.