【问题标题】:Get query string in PHP doesn't work在 PHP 中获取查询字符串不起作用
【发布时间】:2023-03-11 16:01:01
【问题描述】:

我是 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 索引只是一个例子,我想如果我设法只取出文本部分,我会在稍后将它连接起来)?

【问题讨论】:

    标签: php query-string parse-url


    【解决方案1】:

    您似乎正在尝试从字符串中解析 url,而不是从当前请求中解析 url(如评论中所述)

    在 cmets 中的 PHP 文档中,有一个很棒的功能,它完全符合您的要求,我已经将它复制到这里,所以它可以在以后的参考中使用 - 所有功劳归于“Simon D” - @987654321 @

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

    【讨论】:

    • 我不明白,如何使用来自数据库(不是当前请求)的 url 字符串来做到这一点?如果我理解有误,请给我一个用法示例...
    • 一个url字符串怎么可能来自数据库?你在做什么?
    • 正如我提到的,它们之前已经存储在数据库中,来自 Asp.Net 中的请求对象。所以当前的php应用需要做的是能够读取数据库中的那些url,并将它们解析为可读的格式,以便在网格中显示。
    • 在重新阅读您的帖子后,我用解决方案更新了帖子(太晚了,我误解了您最初的问题)
    • @AndersSvensson 我已经更新了我的代码。那是你要的吗?请澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2011-06-13
    • 1970-01-01
    • 2012-12-26
    相关资源
    最近更新 更多