2012-03-20 3 views
0

У меня есть код php, который собирает ключевые слова, используемые для перехода на мой сайт с некоторого javascript и сохраняет их в базе данных, все это прекрасно работает, за исключением того, что оно пропускает последнюю букву конец строки ключевого слова, например, если ключевое слово было примером, оно получило бы экзамен.Отсутствие последней буквы от ссылок на ключевые слова

//Get keywords from reffering website 
function getReferalHost() 
{ 
$ref = parse_url($_GET['self']); 
$refer = $ref['host']; 
return $refer; 
} 

function getKeywords() 
{ 
$refer = str_replace('%2520' , '+' , urlencode($_SERVER['REQUEST_URI'])); 
$refer = str_replace('%26' , '&', $refer); 
$refer = str_replace('%3D' , '=', $refer); 
$host_ref = parse_url($_GET['self']); 
$host = $host_ref['host']; 

if(stristr($host,'google.')) 
{ 
    //do google stuff 
    $match = preg_match('/&q=([a-zA-Z0-9+-]+)/',$refer, $output); 
    $querystring = $output[0]; 
    $rep = str_replace('&q=','',$querystring); 
    $querystring = substr($rep , 0 , (strlen($rep) - 1)); 
    $keywords = explode('+',$querystring); 
    return $keywords; 
} 
elseif(stristr($host,'yahoo.')) 
{ 
    //do yahoo stuff 
    $match = preg_match('/p=([a-zA-Z0-9+-]+)/',$refer, $output); 
    $querystring = $output[0]; 
    $rep = str_replace('p=','',$querystring); 
    $querystring = substr($rep , 0 , (strlen($rep) - 1)); 
    $keywords = explode('+',$querystring); 
    return $keywords; 

} 
elseif(stristr($host,'msn.') or stristr($host,'bing.') or stristr($host, 'ask.com')) 
{ 
    //do msn stuff 
    $match = preg_match('/q=([a-zA-Z0-9+-]+)/',$refer, $output); 
    $querystring = $output[0]; 
    $rep = str_replace('q=','',$querystring); 
    $querystring = substr($rep , 0 , (strlen($rep) - 1)); 
    $keywords = explode('+',$querystring); 
    return $keywords; 
} 

} 

define('DELIMITER' , ' '); 
        $request_uri = getReferalHost(); 
        $keys = getKeywords(); 
        $query_string = ""; 
        foreach($keys as $key){ 
        $query_string .= $key.DELIMITER; 
        } 

Любые предложения были бы высоко оценены.

Благодаря

Lee

ответ

0

у вас есть:

$querystring = substr($rep , 0 , (strlen($rep) - 1)); 

во всех случаях, вы пробовали удалить эту строку?

+0

спасибо, я дам ему попробовать –

+0

Хорошо я подумал, что было работал, он вернул мне последнее письмо, но то, что он также сделал, - это выгрузить часть переменной в таблицу базы данных, например: q = Youth –

+0

Если вы удалите строку, вам нужно изменить '$ keywords = explode ('+', $ querystring);' to '$ keywords = explode ('+', $ rep);' как @MrCode сказал –

0

Удалить эту строку:

$querystring = substr($rep , 0 , (strlen($rep) - 1)); 

Затем измените эту строку:

$keywords = explode('+',$querystring); 

To:

$keywords = explode('+',$rep);