例如我在google搜索 abc
搜索出来的google地址为:http://www.google.co.uk/search?hl=en&biw=1423&bih=731&q=abc&btnG=Search&aq=f&aqi=&aql=&oq=&gs_rfai=URL地址里的q=abc就是关健词,如果点击这个链接进入网站,可以从URL获得搜索的关健词;有没有更好的办法来用PHP获得google搜索来源的关健词呢!

解决方案 »

  1.   

    $_SERVER['HTTP_REFERER']获取来源url对吧
    看php手册,查以下函数
    parse_url 
    parse_str除了这个办法我想不到更好的办法,估计也没有更好的办法。
    比如百度的,w,word都可能是关键词字段。让人郁闷,google的没搞过,你自己需要注意中文编码以及key名称问题。
      

  2.   

    的确是取referer,先根据domain区分来源,google来源匹配preg_match('/q=([^&]*)/i', $path, $regs);$keywords = urldecode($regs[1])  这就是搜索关键词百度是'/wd=([^&]*)/i',或者'/word=([^&]*)/i'。
      

  3.   

    楼上的,google如果有个iq=xxx呢?
    用正则用到你这么狂热还真少见:)
      

  4.   

    php有函数处理不用,非自己闭门造车。
      

  5.   

    hehe,你说的对,不过就算这样,这里我依然会用正则。一方面,至多1-2百的字符串,正则效率不会影响多少。google的确有\w+q=……的参数【不好意思,还是正则】,但是不会出现在第一个另一方面,这个地方的用法,我之前是这样考虑的$a = 123;
    $str = 'a=b&c=d';
    parse_str($str);//我相信你知道这意味着什么对我的应用来说,我可以容忍取错关键词,但是不允许变量被覆盖。当然要避开这个也很容易
      

  6.   

    翻了下手册,失误了,可以用数组返回,变量不会被覆盖这函数的确用得不够熟
    parse_str($str, $result);
      

  7.   

    只是想知道有没有更好的办法获得GOOGLE来源的搜索参数,看来只有截取URL了,多谢大家!