我为查询字符串找到了一些关键字提取器,但它们似乎都已过时(使用已弃用的代码或根本不起作用)。
有谁知道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
答案 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;
}