保存Google搜索查询并使其正确无误

时间:2015-01-06 08:26:15

标签: php

构建网络应用程序时,我需要将引荐来源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,这是我想要的。

1 个答案:

答案 0 :(得分:0)

检查一下。

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]);
    }
}