0

在 php 中,我有函数 get_query_string() 返回字符串变量。例如

$end_of_url = get_query_string();
print $end_of_url;

会打印我

?id=192

我需要把它放在网址的末尾,但是当我附加它时,我有类似的网址

http://mysite.com/device-information%3Fid%3D192

问号 (?) 在 ascii 值%3F中替换,在%3D中替换等号 (=) 。

如何将问号和等号正确放入url?

添加的代码:

    <div id="navigationLang" class="clearfix" style="margin-right: 60px;"> 
            <?php 
                $path = $_GET['q'];
                $languages = language_list('enabled');
                $links = array();
                foreach ($languages[1] as $language) {
                    $links[$language->language] = array(
                        'href'       => $path.get_query_string(),
                        'title'      => ucfirst($language->prefix),
                        'language'   => $language,
                        'attributes' => array('class' => 'language-link'),
                    );
                }

function get_query_string(){
    $request_url = apache_getenv("HTTP_HOST") . apache_getenv("REQUEST_URI");
    $request_url = "http://".$request_url;
    $parts = parse_url($request_url);
    $end_of_url = $parts['query'];
    if ($end_of_url != "") {
        $end_of_url = '?'.$parts['query'];
        $a = htmlentities($end_of_url);
        $b = html_entity_decode($a);
        return $b;
    }
    else {return ""; }
}

主要问题是打印/回显工作正常,但是当我在网站链接中测试它时,链接带有 ascii 符号(%3F 和 %3D),我需要问号和等号

4

2 回答 2

1

那是因为你get_query_string()是 urlencoding。尝试:

print 'http://example.com/'.urldecode($end_of_url);
于 2012-08-22T09:59:28.927 回答
0

问题由此解决:

$id = $_GET['id'];  // here i get id value (in example it's  192)

 $links[$language->language] = array(
                        'href'       => $path,
                        'title'      => ucfirst($language->prefix),
                        'language'   => $language,
                        'attributes' => array('class' => 'language-link'),
                        'query' => array('id' => $id),  // here i create end of url

                    );

要点是在drupal中我应该传递所有东西(?id = 192)而不是href,而是添加'query'参数,即数组。自动添加所有问号和等号,所以我得到了正确的链接

?id=192 

其中 192 是上一个 url 的变量。

于 2012-08-27T08:55:13.730 回答