【问题标题】:How to construct url with http_build_query, but display values without variables?如何使用 http_build_query 构造 url,但显示没有变量的值?
【发布时间】:2019-07-16 09:34:24
【问题描述】:

我正在尝试使用 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,但这些帖子对于解决我的问题并不完全有用。

所以我希望有更多知识的人可以向我展示一个解决方案,或者至少提示如何更接近解决方案。

【问题讨论】:

  • 您一开始就使用了完全错误的功能。 http_build_query 的目的是创建一个 URL 查询字符串,这意味着 name=value 对,由 &(或选择的不同分隔符)分隔。
  • @misorude 在这种情况下,http_build_query 的替代品是什么?

标签: php


【解决方案1】:

你可以使用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() 应该可以完成这项工作。

【讨论】:

  • implode() 对我来说工作得很好。感谢您的建议!
【解决方案2】:

您以错误的方式使用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';

【讨论】:

  • 不知道这种方式。感谢您提到的选项!
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 2019-02-20
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
相关资源
最近更新 更多