如何放置符号'?'和' ='从变量进入url?

时间:2012-08-22 09:56:48

标签: php url

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

$end_of_url = get_query_string();
print $end_of_url;

会打印我

?id=192

我需要把它放到url的末尾,但当我追加它时,我有网址

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

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

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

已添加代码:

    <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),我需要问号和等号

2 个答案:

答案 0 :(得分:1)

这是因为您的get_query_string()是urlencoding。 尝试:

print 'http://example.com/'.urldecode($end_of_url);

答案 1 :(得分: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变量。