php httpbuildurl,http_build_url

用户评论:

[#1]

mtinsley at dallasairmotive dot com [2015-07-13 13:39:18]

To see new interface:

http://devel-m6w6.rhcloud.com/mdref/http/Url

$url= newhttp\Url('http://google.com', ['query'=>http_build_query(['q'=>'test'])]);

echo$url->toString();// Output: http://google.com/?q=test?>

[#2]

zlatko dot zlatev at gmail dot com [2015-03-15 11:09:16]

pecl_http 2+ won't provide http_ functions any more. They moved to Http namespace, sadly no backwards compat.

To sum it up - As of pecl_http >=2.0.0 this is no longed available. Also pecl_http 1.7.6 will work only for PHP <=5.5. For PHP 5.6 we are forced to use version pecl_http 2.0.6+

[#3]

pasafama at gmail dot com [2014-09-26 16:04:33]

It seems to me that the return value must always have a protocol, a host and a path. If they are not provided in the input, default values are added.

From what I saw, the default value for the protocol is 'http://', for the host is the hostname (if running from cli) or the variable $_SERVER['HTTP_HOST'], for the path is the variable $_SERVER['SCRIPT_NAME']

[#4]

michael at REMOVE-THIS-PART dot muryn dot name [2014-04-01 23:16:37]

To those that want to use http_build_url() without parameters to get the canonical page URL, be aware that this function seem to consider the equivalent of SCRIPT_NAME for the path instead of REQUEST_URI.

For example, if /example serve info.php (you can do this with mod_rewrite in Apache for example), while accessing http://example.com/example?test=1 this function will return http://example.com/info.php?test=1 instead of the URL the user see.  This could lead to obvious problems if you build other URL from this.

So like another comment say, it is reckless to use that undocumented feature.  Instead here is what I suggest:

{

returnget_request_scheme() .'://'.$_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI'];

}

functionget_request_scheme()

{

return (isset($_SERVER['HTTPS']) &&$_SERVER['HTTPS'] !=='off') ?'https':'http';

}?>

[#5]

anon at example dot com [2014-02-04 11:33:47]

If you need to access the url to the current script you should examine $_SERVER['REQUEST_URI'].

Using an undocumented feature that gives the same functionality as existing PHP library calls is reckless.

[#6]

Yzmir Ramirez [2013-07-10 18:10:34]

So you used parse_url(...) and looking to put it back together and seeing if this function will do?

You may have seen some glue* functions that will rebuild the url with the parts that you have.  Try this:

$parts=parse_url($uri);$uri=http_build_url('',$parts);?>

Notice the first param is empty string.  It also works with NULL and array() as well.

[#7]

randyg at ernieball dot com [2012-02-06 20:15:14]

Although I've never used this function, based on the documentation it seems that the above code should also include the following:

// Parse the original URL$parse_url=parse_url($url);// allow parts to be a url Added - Randyif ( !is_array($parts) )$parts=parse_url($parts);?>

[#8]

Ant P. [2010-06-09 09:58:49]

This function has a useful undocumented feature - the defaults are set in such a way that calling it with no parameters returns the full URL of the page being accessed.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值