function wp_get_delim($ref) { // Search engine match array // Used for fast delimiter lookup for single host search engines. // Non .com Google/MSN/Yahoo referrals are checked for after this array is checked $search_engines = array('google.com' => 'q', 'go.google.com' => 'q', 'maps.google.com' => 'q', 'local.google.com' => 'q', 'search.yahoo.com' => 'p', 'search.msn.com' => 'q', 'msxml.excite.com' => 'qkw', 'search.lycos.com' => 'query', 'search.live.com' => 'q', 'alltheweb.com' => 'q', 'search.aol.com' => 'query', 'search.iwon.com' => 'searchfor', 'ask.com' => 'q', 'ask.co.uk' => 'ask', 'search.cometsystems.com' => 'qry', 'hotbot.com' => 'query', 'overture.com' => 'Keywords', 'metacrawler.com' => 'qkw', 'search.netscape.com' => 'query', 'looksmart.com' => 'key', 'dpxml.webcrawler.com' => 'qkw', 'search.earthlink.net' => 'q', 'search.viewpoint.com' => 'k', 'mamma.com' => 'query'); $delim = false; // Check to see if we have a host match in our lookup array if (isset($search_engines[$ref])) { $delim = $search_engines[$ref]; } else { // Lets check for referrals for international TLDs and sites with strange formats // Optimizations $sub13 = substr($ref, 0, 13); // Search string for engine if(substr($ref, 0, 7) == 'google.') $delim = "q"; elseif($sub13 == 'search.atomz.') $delim = "sp-q"; elseif(substr($ref, 0, 11) == 'search.msn.') $delim = "q"; elseif($sub13 == 'search.yahoo.') $delim = "p"; elseif(preg_match('/home\.bellsouth\.net\/s\/s\.dll/i', $ref)) $delim = "bellsouth"; } return $delim; } function wp_get_refer() { if (!isset($_SERVER['HTTP_REFERER']) || ($_SERVER['HTTP_REFERER'] == '')) return false; $referer_info = parse_url($_SERVER['HTTP_REFERER']); $referer = $referer_info['host']; $path = $referer_info['path']; if(($referer == 'www.google.com') && (substr($path, 1, 6) == 'reader')) return false; // Google Reader Hack if(substr($referer, 0, 4) == 'www.') $referer = substr($referer, 4); return $referer; } $referer = wp_get_refer(); if ($referer) { $delimiter = wp_get_delim($referer); if ($delimiter) return; }