2012-01-28 64 views
1

我想多次使用用户在Google中使用的搜索词组,以便访问我的网站。我可以从Google获取搜索词组吗?

是否有任何程序化的方式来做到这一点?

感谢, 奥兰

+0

http://coding.pressbin.com/59/Get-Google-search-terms-and-rank-from-HTTP-referrer – 2012-01-28 21:37:32

+0

你甚至尝试过什么吗? – random 2012-01-28 21:55:36

+0

对不起。还没。将尝试并尽快回复。 – OrPaz 2012-02-13 16:26:28

回答

4

使用HTTP_REFERER服务器变量。

$referer= $_SERVER['HTTP_REFERER']; 
//find the search query from google that brought them here 
$qref= strpos($referer,’google’); 
if($qref!=”){ 
$qstart = strpos($referer,’q=’); 
$qend = strpos($referer,’&’,$qstart); 
$qtext= substr($referer,$qstart+2,$qend-$qstart-2); 
$qtext= str_replace(‘+’,’ ‘,$qtext); 
} 
echo $qtext 

here服用。

+1

应该注意,如果找不到字符串,strpos将返回布尔值false,如果找到,则返回整数。所以你应该使用'if($ qref!== false){' – Arjan 2012-01-28 21:41:37

+0

谢谢。 $ _SERVER ['HTTP_REFERER']拥有这一切...... – OrPaz 2012-02-13 16:27:23

+0

现在,Google转移到https和https应该不会传递HTTP_REFERER数据了吗? – 2015-11-25 10:57:27

1

我认为它应该在引用者中,因为它们通过q参数将搜索字符串追加到url。

5

您可以使用下面的代码:

$referrer = $_SERVER['HTTP_REFERER']; 
if (!empty($referrer)) { 
    $parts_url = parse_url($referrer); 
    $query = isset($parts_url['query']) ? $parts_url['query'] : ''); 
     if($query) { 
      parse_str($query, $parts_query);    

      $ref_keywords = isset($parts_query['q']) ? $parts_query['q'] : (isset($parts_query['query']) ? $parts_query['query'] : '')); 
     } 
} 

不过,请注意,Google现在已停止在其所有已登录用户的引荐来源中发送查询字符串。因此,您的功能仅适用于退出Google的用户。这里有更多关于这个的信息http://googleblog.blogspot.com/2011/10/making-search-more-secure.html

+1

提及隐藏查询登录用户的大+1。 – ceejayoz 2012-01-28 21:43:58

相关问题