我目前正在使用Laravel构建项目,我需要使用查询字符串构建URL。 URL :: functions和url(),action()等是不可能的,因为它们主要是为内部使用而构建的。我需要创建的网址是外部的。
我可以提供的类似示例是静态图片Google Maps api的外部网址:
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 / query扩展,因为有许多功能在内部执行此操作。我无法找到最好的地方去插上&#34;自己。
答案 0 :(得分:3)
如果你需要重新发明轮子(这很糟糕,很遗憾听到),你可以这样做。
$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));
}
但我不是百分之百,这是你真正想要的,所以如果我错了就道歉。
编辑:四年后,鉴于他们要求使用Laravel方法,我会做这样的事情:
collect($array)->map(function ($value, $key) {
return urlencode($key) . '=' . urlencode($value);
})->join('&');
答案 1 :(得分:0)
简单字符串连接:
$myStr = 'puppies.';
echo 'Dogs have '.$myStr;
输出:
狗有小狗。
您可以以相同的方式将数组的元素与url字符串连接起来:
$values = Array(
'center'=>'New York, NY',
'zoom'=>13,
'size'=>'600x300'
)
$urlTemp = 'https://maps.googleapis.com/maps/api/staticmapcenter=';
$url = $urlTemp.$values['center']
.'&zoom='.$values['zoom']
.'&size='.$values['size']
.'&key=KEY';
答案 2 :(得分:-1)