Ключевое слово Extractor для строк запроса - PullRequest
1 голос
/ 01 декабря 2010

Я нашел несколько экстракторов ключевых слов для строк запроса, но все они устарели (используйте устаревший код или просто не работают).

Кто-нибудь знает о экстракторе строк запроса php.Или как мне построить функцию, которая принимает "host", такой как "amazon.com" и имена нескольких параметров запроса, и возвращает значения этих параметров?

Например, http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=a+tale+of+two+cities&x=0&y=0

Если я предоставил "amazon.com" и "ключевые слова поля", как я могу получить массив: ['a','tale','of','two','cities']?

Заранее спасибо !!

Уточнение

Ответ Хосе охватывает мой пример для Amazon, но, похоже, не работает для других URL:

http://www.bing.com/search?q=Christmas+Around+The+World&form=QBLH&qs=PN&sk=HS1PN4&pq=&sp=6&sc=8-0

http://search.yahoo.com/search;_ylt=AnQN0c997QR5SIYcYt.h2YCbvZx4?p=golf&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701

Ответы [ 3 ]

1 голос
/ 01 декабря 2010

Вы (я) могли бы написать один.

function getValueFromDomain($urls, $domain, $key) {
    foreach ($urls as $url) {
        if (preg_match('/https?:\/\/[^\/]*?' . preg_quote($domain) . '\//', $url)) {
            parse_str(substr($url, strpos($url, '?') + 1), $output);
            if (isset($output[$key])) {
                $array = explode(' ', $output[$key]);
                return $array;
            }
        }
    }
    return array();
}

Просто немного кода, украденного из ответа @ Jose: :) ​​

Обновление : проверено, не былоt работает, исправлено, работает.

Обновление 2 : в конце концов не работает, проверено, исправлено, работает.

Обновление 3 :добавлена ​​поддержка HTTPS

1 голос
/ 01 декабря 2010

Это должно сделать это ..

<?php
    $str = "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=a+tale+of+two+cities&x=0&y=0";
    parse_str($str, $output);
    $array =  explode(" ",$output['field-keywords']);
    print_r($array);

?>
0 голосов
/ 01 декабря 2010

Как я читаю вопрос, вам нужно только передать имя индекса строки запроса в функцию, например ...

function get_keywords($parameter){
        $words = explode(" ", $_GET[$parameter]);
         return $words;
}
...