首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:搜索字符串中的重合

问PHP:搜索字符串中的重合
EN

Stack Overflow用户
提问于 2010-08-07 01:03:52
回答 2查看 492关注 0票数 0

我想过滤HTTP_REFERER的访客来我的网站从搜索引擎。我想忽略存储来自搜索引擎的访问者的HTTP_REFERER信息。你能帮我修改一下PHP脚本吗?

我有这个,但不是正确的脚本:

代码语言:javascript
复制
<?
$exp_list = array('google', 'yahoo');

// exapmple of one HTTP_REFERER link from the Goggle search engine
$link = 'http://www.google.com/search?hl=ru&source=hp&q=bigazart&aq=f&aqi=&aql=&oq=&gs_rfai=';

for ($j = 0; $j < sizeof($exp_list); $j++){

if(!eregi($exp_list[$j], $link)){

// storing link to mysql...

break;

}

}
?>
EN

回答 2

Stack Overflow用户

发布于 2010-08-07 01:10:52

尝试如下所示:

代码语言:javascript
复制
if (isset($_SERVER['HTTP_REFERER'])) {
    $host = strtolower(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST));
    $exp_list = array('google', 'yahoo');
    $pattern = '/^(?:www\.)?(?:'.implode('|', array_map('preg_quote', $exp_list)).')\./'
    if (preg_match($pattern, $host)) {
        // match found
    }
}

重要的事情:

  • 检查$_SERVER['HTTP_REFERER']是否存在
  • 使用parse_url从网址获取主机仅在此处搜索
  • 测试术语是否由圆点括起来

但这仍然会错误地标识www.google.example.com这样的主机。因此,您可能还希望指定顶级/二级域名。

票数 1
EN

Stack Overflow用户

发布于 2010-08-07 01:19:13

您应该能够自定义下面的模式以匹配更多的域。

代码语言:javascript
复制
<?php

$ignore_hosts = array(
    '/^www.google.com$/',
    '/^www.yahoo.com$/'
    );

$host = parse_url($_SERVER['HTTP_REFERRER'], PHP_URL_HOST);

$ignore = FALSE;
foreach ($ignore_hosts as $pattern) {
    if (preg_match($pattern, $host) == 0){
        $ignore = TRUE;
        break;
    }
}

if (! $ignore)
    echo "Here you should store the referrer.";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3426026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档