我目前正在使用 Laravel 构建一个项目,我需要使用查询字符串构建 URL。 URL::函数和 url()、action() 等是不可能的,因为它们主要是为内部使用而构建的。我需要创建的网址是外部的。
我可以给出的一个类似的例子是静态图像 Google Maps api 的外部 URL:
https://maps.googleapis.com/maps/api/staticmap?center=New+York,NY&zoom=13&size=600x300&key=KEY
如果你有数组:
<!-- language: lang-php -->
array(
'center'=>'New York, NY',
'zoom'=>13,
'size'=>'600x300'
)
我主要问这个问题,因为目前我不可能安装 http_build_url/查询扩展,而且有很多函数在内部执行此操作。我只是找不到最好的地方来“插入”自己。
最佳答案
如果您需要重新发明轮子(这很糟糕,很抱歉听到),您可以这样做。
$queryString = '';
$arrayLength = count($myArray);
foreach ($myArray as $key => $val) {
$queryString .= urlencode($key) . '=' . urlencode($val);
$arrayLength--;
if ($arrayLength) {
$queryString .= '&';
}
}
我将它保存为一个函数,并有一个单独的函数来构造 url,例如
function buildUrl($baseUri, $params) {
return sprintf("%s?%s", $baseUri, buildQueryString($params));
}
但我并不是 100% 这就是您真正想要的,所以如果我错了,请道歉。
编辑:四年后,鉴于他们要求 Laravel 方法,我会做这样的事情:
collect($array)->map(function ($value, $key) {
return urlencode($key) . '=' . urlencode($value);
})->join('&');
关于php - Laravel 使用查询字符串构建外部 URL 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26808796/