方法一:
//php获取当前访问的完整url地址
function get_current_url(){
$current_url='http://';
if(isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on'){
$current_url='https://';
}
if($_SERVER['SERVER_PORT']!='80'){
$current_url.=$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI'];
}else{
$current_url.=$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
return $current_url;
}
方法二:$url = $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?"); // 判断是否存在 '?'
$parse = parse_url($url);
if(isset($parse['query'])) {
parse_str($parse['query'],$params); // 将 parse['query'] 里的值存到 params 里
$url = $parse['path'].'?'.http_build_query($params); // 生成请求的 url
}
其中的strpos方法是查找 某个字符串首次出现的位置,不存在是返回 false。
parse_url 方法是解析 url 返回组成部分,返回值是一个数组:
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
输出为:
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
http_build_query(),生成 url 后面的请求字符串:
$data = array("name"=>"callback" , "value"=>"test");
$rescult = http_build_query($data);
我们输出下$rescutl可以得到:
name=callback&value=test