$url = "http://www.daimajiayuan.com/course/";
解析url,将url进行分解,parse_url($url)输出:
Array (
[scheme] => http
[host] => www.daimajiayuan.com
[path] => /course
)
$url = 'http://username:password@hostname/path?arg=value#anchor';
parse_url($url);
输出:
Array(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
如果加上第二个参数:parse_url($url,PHP_URL_PATH);echo parse_url($url,PHP_URL_PATH);
输出:/path
在第二个参数中,可以设定如下的参数:
PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY or PHP_URL_FRAGMENT。
分别得到不同的结果
parse_str() 函数把查询字符串解析到变量中。
parse_str("name=Bill&age=60");
echo $name."
";
echo $age; 输出:Bill,60
parse_str(string,array)
string必需,规定要解析的字符串,array可选,规定存储变量的数组的名称。该参数指示变量将被存储到数组中
parse_str("name=Bill&age=60",$myArray);
print_r($myArray);
输出:Array ( [name] => Bill [age] => 60 )
http_build_query()就是将一个数组转换成url问号?后面的参数字符串,并且会自动进行urlencode处理。
$data = array(
'foo'=>'bar',
'baz'=>'boom',
'site'=>'www.nowamagic.net',
'name'=>'nowa magic');
echo http_build_query($data);
输出:foo=bar&baz=boom&site=www.nowamagic.net&name=nowa+magic
索引数组与关联数组混合而成的数组
$data = array(
'foo',
'bar',
'site'=>'www.nowamagic.net',
'name'=>'nowa magic');
echo http_build_query($data);
输出:0=foo&1=bar&site=www.nowamagic.net&name=nowa+magic会自动添加数字索引
第二个参数,也可以给数字索引加前缀,
$data = array(
'foo',
'bar',
'site'=>'www.nowamagic.net',
'name'=>'nowa magic');
echo http_build_query($data, "nn_");
输出:nn_0=foo&nn_1=bar&site=www.nowamagic.net&name=nowa+magic
复杂一些的数组:
$data = array(
'user'=>array('name'=>'Bob Smith',
'age'=>47,
'sex'=>'M',
'dob'=>'5/12/1956'),
'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
'children'=>array('bobby'=>array('age'=>12,'sex'=>'M'),
'sally'=>array('age'=>8,'sex'=>'F')),
'CEO');
echo "
";
echo http_build_query($data);
输出:user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=
M&user%5Bdob%5D=5%2F12%2F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=
opera&pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D
=12&children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8
&children%5Bsally%5D%5Bsex%5D=F&0=CEO
不过,这种用法在现实中很少用,没有太大的意义!
http_build_query(),对象也能转化为字符串:
class myClass {
var $foo;
var $baz;
function myClass() {
$this->foo = 'bar';
$this->baz = 'boom';
}
}
$data = new myClass();
echo http_build_query($data);
输出:foo=bar&baz=boom
在现实中http_build_query()用的关联数组的还是比较多。