Получить ключевое слово из URL-адреса реферера (поисковой системы) с помощью PHP

StackOverflow https://stackoverflow.com/questions/1805296

  •  05-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь получить ключевое слово для поиска из URL-адреса реферера.В настоящее время я использую следующий код для URL-адресов Google.Но иногда это не срабатывает...

$query_get = "(q|p)";
$referrer = "http://www.google.com/search?hl=en&q=learn+php+2&client=firefox";
preg_match('/[?&]'.$query_get.'=(.*?)[&]/',$referrer,$search_keyword);

Есть ли другой / чистый / работающий способ сделать это?

Спасибо тебе, Прасад

Это было полезно?

Решение

Если вы используете PHP5, взгляните на http://php.net/parse_url и http://php.net/parse_str

Пример:

// The referrer
$referrer = 'http://www.google.com/search?hl=en&q=learn+php+2&client=firefox';

// Parse the URL into an array
$parsed = parse_url( $referrer, PHP_URL_QUERY );

// Parse the query string into an array
parse_str( $parsed, $query );

// Output the result
echo $query['q'];

Другие советы

В разных поисковых системах есть разные строки запросов. Попробовав метод Уильяма, я выяснил свой собственный метод. (Потому что Yahoo использует 'p', но иногда 'q')

$referrer = "http://search.yahoo.com/search?p=www.stack+overflow%2Ccom&ei=utf-8&fr=slv8-msgr&xargs=0&pstart=1&b=61&xa=nSFc5KjbV2gQCZejYJqWdQ--,1259335755";
$referrer_query = parse_url($referrer);
$referrer_query = $referrer_query['query'];
$q = "[q|p]"; //Yahoo uses both query strings, I am using switch() for each search engine
preg_match('/'.$q.'=(.*?)&/',$referrer,$keyword);
$keyword = urldecode($keyword[1]);
echo $keyword; //Outputs "www.stack overflow,com"

Спасибо, Прасад

Чтобы дополнить другие ответы, обратите внимание, что параметр строки запроса, который содержит условия поиска, зависит от поставщика поиска. Этот фрагмент PHP показывает правильный параметр для использования:

$search_engines = array(
    'q' => 'alltheweb|aol|ask|ask|bing|google',
    'p' => 'yahoo',
    'wd' => 'baidu',
    'text' => 'yandex'
);

Источник: http://betterwp.net/wordpress-tips / Get-поиск-ключевые слова-из-реферер /

<?php 
class GET_HOST_KEYWORD 
{ 
    public function get_host_and_keyword(<*>url) { 
        $p = $q = "";
        $chunk_url = parse_url(<*>url); 
        <*>data["host"] = ($chunk_url['host'])?$chunk_url['host']:''; 
        parse_str($chunk_url['query']); 
        <*>data["keyword"] = ($p)?$p:(($q)?$q:''); 
        return <*>data; 
    } 
}     
// Sample Example 
$obj = new GET_HOST_KEYWORD(); 
print_r($obj->get_host_and_keyword('http://www.google.co.in/search?sourceid=chrome&ie=UTF-&q=hire php php programmer')); 

// sample output
//Array
//(
//    [host] => www.google.co.in
//    [keyword] => hire php php programmer
//)

// $search_engines = array(
//    'q' => 'alltheweb|aol|ask|ask|bing|google',
//    'p' => 'yahoo',
//    'wd' => 'baidu',
//    'text' => 'yandex'
//);


?>
$query = parse_url($request, PHP_URL_QUERY);

Это должно работать для Google, Bing, а иногда и для Yahoo Search:

if( isset(

Это должно работать для Google, Bing, а иногда и для Yahoo Search:

<*>SERVER['HTTP_REFERER']) &&

Это должно работать для Google, Bing, а иногда и для Yahoo Search:

<*>SERVER['HTTP_REFERER']) { $query = getSeQuery(

Это должно работать для Google, Bing, а иногда и для Yahoo Search:

<*>SERVER['HTTP_REFERER']); echo $query; } else { echo "I think they spelled REFERER wrong? Anyways, your browser says you don't have one."; } function getSeQuery($url = false) { $segments = parse_url($url); $keywords = null; if($query = isset($segments['query']) ? $segments['query'] : (isset($segments['fragment']) ? $segments['fragment'] : null)) { parse_str($query, $segments); $keywords = isset($segments['q']) ? $segments['q'] : (isset($segments['p']) ? $segments['p'] : null); } return $keywords; }

Я считаю, что Google и Yahoo обновили свой алгоритм, чтобы исключить ключевые слова поиска и другие параметры в URL, которые нельзя получить с помощью метода http_referrer.

Пожалуйста, дайте мне знать, если приведенные выше рекомендации будут по-прежнему содержать ключевые слова для поиска.

То, что я получаю сейчас, приведено ниже при использовании http referrer на моем сайте.

от Google: https://www.google.co.in/ От Yahoo: https://in.yahoo.com/

Ссылка: https: //webmasters.googleblog .com / 2012/03 / наступающие-изменения-в-Googles-http.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top