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