我是一个php新手,我正在尝试遵循如何获取查询字符串的建议。我希望以可读格式搜索的单词。
现在,字符串来自数据库,之前使用Asp.Net中的请求对象的referer属性收集它们。但据我所知,这应该没有任何区别。
所以我尝试了这个:
function getQuery($url)
{
$processed_url = parse_url( $url );
$query_string = $processed_url['query'];
if($url != '')
{
return $query_string;
}
else
{
return $url;
}
}
所以我尝试了一个变体,它也应该提取查询字符串:
$query = parse_url($url, 6);
return $query;
嗯,那种作品。它给了我一个查询字符串部分,但包括“q =”和所有这些,而不仅仅是查询字符串的文本。
所以我尝试了对此的parse_str()函数,它应该能够解析查询字符串本身:
parse_str($query, $myArray);
return $myArray[0];
但这根本不起作用,它在结果页面(网格)中没有给我任何结果。
我做错了什么?首先使用第一种获取上述查询的方法,然后将查询字符串解析为其组件? (0索引只是一个例子,我以为如果我设法只取出文本部分,我会把它连接起来)?
答案 0 :(得分:0)
您似乎试图从字符串中解析网址,而不是从当前请求解析(如评论中所述)
在评论中的PHP文档中,有一个很棒的功能,它完全符合您的要求,我已将其复制到此处,因此可以在以后的参考资料中使用 - 所有功劳都归功于“Simon D” - {{ 3}}
<?php
/**
* Returns the url query as associative array
*
* @param string query
* @return array params
*/
function convertUrlQuery($query) {
$queryParts = explode('&', $query);
$params = array();
foreach ($queryParts as $param) {
$item = explode('=', $param);
$params[$item[0]] = $item[1];
}
return $params;
}
?>
这意味着它应该像这样使用:
$array = convertUrlQuery(parse_url($url, 6));