首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >怎样才能有一个好的网址?

怎样才能有一个好的网址?
EN

Stack Overflow用户
提问于 2018-08-16 06:21:54
回答 1查看 80关注 0票数 -2

我正在尝试开发一个新的银行模块。银行有一个API,当我发送以下URL作为对银行API的请求中的参数时:

代码语言:javascript
复制
https://www.example.net:443/demo/index.php?order&bank&success&ho

然后,它返回一个包含请求结果作为URL参数的响应URL,但是银行的API假定所提供的URL还没有查询字符串,并简单地将包括?的新的完整查询字符串附加到输入URL (例如) ?TPE=monet14&date=12%2f07%2f2018%5fa%5f11%3a32%3a28&monta,从而生成最终的URL:

代码语言:javascript
复制
https://www.example.net:443/demo/index.php?order&bank&success&ho?TPE=monet14&date=12%2f07%2f2018%5fa%5f11%3a32%3a28&monta

然而,由于额外的?字符,当我将用户重定向到这个URL时,我的服务器将$_GET['ho?TPE']解释为单变量"monet14",而不是$_GET['ho'] = ""$_GET['TPE'] = "monet14"。当我将远程用户重定向到此URL时,他们将被重定向到index.php,而不是所需的脚本。

以下是重定向用户后var_dump($_GET)的输出:

代码语言:javascript
复制
array(23) { 
    ["order"]=> string(0) "" 
    ["desjardins"]=> string(0) "" 
    ["success"]=> string(0) "" 
    ["ho?TPE"]=> string(7) "monet14" 
    ["date"]=> string(21) "12/07/2018_a_11:32:28" 
    ["montant"]=> string(5) "53EUR"
}

相反,我希望用户被重定向到:

代码语言:javascript
复制
 https://www.example.net:443/demo/index.php?order&bank&success&ho&TPE=monet14

在重定向用户之前,如何将我的银行API返回的URL中的额外?更改为&

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 06:57:16

如果我没记错的话,你可能在找http_build_queryparse_strparse_url。下面是一个如何解析、操作两个查询并将其组合为一个查询的示例:

代码语言:javascript
复制
// These are the two URLs to parse
$url1 = 'https://www.example.net:443/demo/index.php?order&bank&success&ho?TPE=monet14&date=12%2f07%2f2018%5fa%5f11%3a32%3a28&monta...'
$url2 = '?TPE=monet14&date=12%2f07%2f2018%5fa%5f11%3a32%3a28&monta';

// Get the part after the "?"
$queryString1 = parse_url($url1)['query'] ?? ''; // 'query' may be undefined
$queryString2 = parse_url($url2)['query'] ?? ''; // 'query' may be undefined

// Split the parts into usable arrays and save the result into defined variables
$queryArray1 = $queryArray2 = [];
parse_str($queryString1, $queryArray1);
parse_str($queryString2, $queryArray2);

// Now you can manipulate the arrays as you wish;
// after you have done that, you can combine them together:
$resultQueryString = http_build_query(array_merge($queryArray1, $queryArray2));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51867240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档