查询字符串的关键字提取器

时间:2010-12-01 18:58:24

标签: php query-string

我为查询字符串找到了一些关键字提取器,但它们似乎都已过时(使用已弃用的代码或根本不起作用)。

有谁知道php查询字符串提取器。或者我如何构建一个带有“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']

提前致谢!!

澄清

何塞的回答涵盖了我的亚马逊示例,但似乎不适用于任何其他网址:

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 个答案:

答案 0 :(得分:1)

应该这样做..

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

?>

答案 1 :(得分:1)

你(我)可以写一个。

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的回答中偷了一大堆密码:)

更新:已测试,无效,已修复,无效。

更新2 :毕竟不起作用,经过测试,修复,无效。

更新3 :添加了对HTTPS的支持

答案 2 :(得分:0)

我读这个问题的方式,你只需要将查询字符串索引名称传递给函数,如...

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