如何使用http_build_query构造url,但显示不带变量的值?

时间:2019-07-16 09:34:24

标签: php

我正在尝试通过使用http_build_query从两个数组的所有值生成URL:

数组1:

$server = array($_GET["server"]);

数组2:

$data = array($_GET["z_koord"],
        $_GET['x_koord'],
        $_GET["y_koord"],);

我当前编写的用于生成URL的代码:

$server = array(''=>$_GET["server"]);
$data = array($_GET["z_koord"],
        $_GET['x_koord'],
        $_GET["y_koord"],);
$url = '.tile.openstreetmap.org';
$saite = http_build_query($server). $url ."/". http_build_query($data,'','/').".png";

以下是由上面的代码组成的URL:

=c.tile.openstreetmap.org/0=6/1=90/2=110.png

这是我要制作的url结构:

c.tile.openstreetmap.org/6/90/110.png

我查看了有关该主题的其他帖子,例如this onethis,但这些帖子对于解决我的问题并不完全有用。

因此,我希望知识渊博的人可以向我展示解决方案,或者至少提示如何接近解决方案。

2 个答案:

答案 0 :(得分:2)

您可以使用implode()

$server = $_GET["server"];
$data   = [$_GET["z_koord"],
           $_GET['x_koord'],
           $_GET["y_koord"]];
$url    = '.tile.openstreetmap.org';
$saite  = "$server/$url/" . implode('/', $data) . ".png";

我不确定这段代码中的某些内容,但是implode()应该可以完成工作。

答案 1 :(得分:1)

您以错误的方式使用http_build_query。您只是不需要。有2个选项,您可以使用其中任何一个。

使用implode(),这是完成工作的最简单方法。

$server = array(
    '' => $_GET['server']
);
$data = array(
    $_GET['z_koord'],
    $_GET['x_koord'],
    $_GET['y_koord'],
);
$url   = $server . '.tile.openstreetmap.org';
$saite = $url . '/' . implode("/", $data) . '.png';

使用“参数”直接创建URL,如下所示:

$url   = '.tile.openstreetmap.org' .;
$saite = $_GET['server'] . $url . '/' . $_GET['z_koord'] .'/'. $_GET['x_koord'] . '/'.$_GET['y_koord'] . '.png';