الحصول على الكلمة من (محرك البحث) رابط المرجع باستخدام PHP

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

  •  05-07-2019
  •  | 
  •  

سؤال

واني اسعى الى الحصول على كلمة البحث من رابط الإحالات. حاليا، أنا باستخدام التعليمات البرمجية التالية لعناوين المواقع جوجل. لكن في بعض الأحيان لا يعمل ...

$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 و <ل أ href = "http://php.net/parse_str" يختلط = "noreferrer"> 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'];

نصائح أخرى

وهناك مختلف سلاسل الاستعلام على محركات البحث المختلفة. بعد محاولة طريقة ويليام، ولقد برزت طريقة بلدي. (لأنه، على ياهو باستخدام 'ع'، ولكن في بعض الأحيان 'ف')

$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 / جت-بحث-الكلمات الرئيسية من-الإحالات /

<?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);

ويجب أن تعمل هذا واحد لجوجل، بنج، وأحيانا، وياهو البحث:

if( isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']) {
    $query = getSeQuery($_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;
}

وأعتقد أن جوجل وياهو قد تحدث خوارزمية لاستبعاد كلمات البحث وبارامس أخرى في عنوان الموقع الذي لا يمكن تلقيها باستخدام طريقة http_referrer.

واسمحوا لي أن أعرف إذا التوصيات المذكورة أعلاه سوف لا تزال توفر البحث عن الكلمات الرئيسية.

وماذا أتلقى الآن هي أقل عند استخدام HTTP المرجع في موقعي نهاية.

ومن جوجل: https://www.google.co.in/ من ياهو: https://in.yahoo.com/

المرجع: الشبكي: //webmasters.googleblog كوم / 2012/03 /-التغييرات القادمة في وغوغل-http.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top