how to parse Google/MSN/Yahoo search queries

Discussion in 'PHP' started by frankcow, Dec 15, 2006.

  1. #1
    Does anyone know of any pre-built functions out there to parse the search query used to get to your site?

    I'm going to build a function to do it, but would certainly love to save myself the time if it already exists.

    I need to determine whether they came from natural search vs paid as well
     
    frankcow, Dec 15, 2006 IP
  2. krakjoe

    krakjoe Well-Known Member

    Messages:
    1,795
    Likes Received:
    141
    Best Answers:
    0
    Trophy Points:
    135
    #2
    do you mean like in awstats where it says the search terms used ?
     
    krakjoe, Dec 15, 2006 IP
  3. frankcow

    frankcow Well-Known Member

    Messages:
    4,859
    Likes Received:
    265
    Best Answers:
    0
    Trophy Points:
    180
    #3
    yes, that sort of functionality, but I want to create a PHP function to do it, so I can track leads by their search engine source
     
    frankcow, Dec 15, 2006 IP
  4. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #4
    Untested.

    
    $ref = @parse_url($_SERVER['HTTP_REFERER']);
    
    if (preg_match('/(google|yahoo|msn)\.[a-z]{2,4}/$', $ref['host'], $engine))
    {
    	@parse_str($ref['query'], $query);
    	$request = $engine[1] == 'yahoo' ? $query['p'] : $query['q'];
    	
    	if (!empty($request))
    	{
    		$keywords = preg_split('/[\+\s]/', $request);
    			
    		print_r($keywords);
    	}
    }
    
    
    
    PHP:
     
    nico_swd, Dec 15, 2006 IP
  5. frankcow

    frankcow Well-Known Member

    Messages:
    4,859
    Likes Received:
    265
    Best Answers:
    0
    Trophy Points:
    180
    #5
    very slick. Now I suppose that if you wanted to parse for all search engines you could use a switch case instead of this line, correct?

    
    	$request = $engine[1] == 'yahoo' ? $query['p'] : $query['q'];
    
    PHP:
     
    frankcow, Dec 15, 2006 IP
  6. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #6
    Yes. Most search engines use q though, so there won't be much to switch.
     
    nico_swd, Dec 15, 2006 IP
  7. frankcow

    frankcow Well-Known Member

    Messages:
    4,859
    Likes Received:
    265
    Best Answers:
    0
    Trophy Points:
    180
    #7
    I believe hotbot, aol, and lycos use query=
     
    frankcow, Dec 15, 2006 IP
  8. TwistMyArm

    TwistMyArm Peon

    Messages:
    931
    Likes Received:
    44
    Best Answers:
    0
    Trophy Points:
    0
    #8
    I know that someone, somewhere, has written some code for this. I know this because I remember seeing it linked either here or on another forum. I can't for the life of me find it, though... suffice to say there is code out there: just keep looking :)
     
    TwistMyArm, Dec 15, 2006 IP