什么是Laravel使用查询字符串构建外部URL的最佳方法?

时间:2014-11-07 19:38:34

标签: php url laravel

我目前正在使用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;自己。

3 个答案:

答案 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)