在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),我需要问号和等号
答案 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变量。