保存 Google 个搜索查询并正确处理

Saving Google search queries and getting it right

在构建 Web 应用程序时,我需要将引用 Google 搜索查询保存到一个文件中,然后再回显它们。

到目前为止我尝试过的是:

function write_to_file($q)
{$filename = 'sitemap.dat';
$fh = fopen($filename, "a");
if(flock($fh, LOCK_EX))
{fwrite($fh, $q);
flock($fh, LOCK_UN);}
fclose($fh);}

$ref = $_SERVER['HTTP_REFERER'];
if(strstr($ref, "http://")){
if(strstr($ref, "google.com")){
  //echo $ref;  
  $regex ='/q=(.+?)&/';
  preg_match($regex, $ref, $query);
    $user_query = ''.$query[1].'';

write_to_file($user_query);
 }}

首先简化上面的代码,它创建一个将文本保存到文件中的函数,然后它查找引用,检查它是否不是 https,然后它检查它是否是 google.com。

所有排序现在它抓取查询部分并将其写入文件。但是我无法让它工作,因为脚本之后的页面没有显示,并且 sitemap.dat.

中没有保存任何内容

此外,如果我删除文件功能,它会回显 search%20query,这是我想要的。

看看这个。

function write_to_file($q=''){
    if($q==='') return false;
    $fh = fopen('sitemap.dat', "a");
    if(flock($fh, LOCK_EX)){
        fwrite($fh, $q."\n");
        flock($fh, LOCK_UN);
    }
    fclose($fh);
    echo 'done';
}

$ref = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : '';

if(strstr($ref, "http://www.google.co")){
    preg_match('/q=(.+)&?/', $ref, $query);
    if(count($query)>1){
        write_to_file($query[1]);
    }
}