方法一:
//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