您现在的位置是:首页 > 志趣人生 > PHP相关网站首页PHP相关
php 关于URL处理的三个函数
一、http_build_query函数
说明:使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。
http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] ) : string
参数
(1)query_data 可以是数组或包含属性的对象。
(2)numeric_prefix 如果在基础数组中使用了数字下标同时给出了该参数,此参数值将会作为基础数组中的数字下标元素的前缀。 这是为了让 PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。
(3)arg_separator 除非指定并使用了这个参数,否则会用 arg_separator.output 来分隔参数。
(4)enc_type 默认使用 PHP_QUERY_RFC1738。如果 enc_type 是 PHP_QUERY_RFC1738,则编码将会以 » RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码,空格会被编码成加号(+)。
返回值
返回一个 URL 编码后的字符串。
eg:
$data=array( 'name'=>'lirongyao', 'age'=>'27', 'sex'=>'body', 'aihao'=>'project', 'job'=>'doctor', 'address'=>'henan' ); echo http_build_query($data); //result:name=lirongyao&age=27&sex=body&aihao=project&job=doctor&address=henan
二、parse_str函数
说明:如果 str 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域。
语法:parse_str(string,array)
@string必需。规定要解析的字符串。
@array可选。规定存储变量的数组的名称。该参数指示变量将被存储到数组中。
eg:
$str='name=lirongyao&age=27&sex=body&aihao=project&job=doctor&address=henan'; parse_str($str); echo $name.'<br/>'.$sex.'<br/>'.$aihao.'<br/>'.$age.'<br/>'.$address.'<br/>'.$job.'<br/>'; //result:lirongyao body project 27 henan doctor parse_str($str,$arr); lryp($arr); /*Array ( [name] => lirongyao [age] => 27 [sex] => body [aihao] => project [job] => doctor [address] => henan )*/
注:lryp()为属于自己编写的打印函数,可以用var_dump()代替
敲黑板:parse_str()是http_build_query()反向的函数
三、parse_url
说明:本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,parse_url() 会尝试尽量正确地将其解析。
参数:
url 要解析的 URL。无效字符将使用 _ 来替换。
component 指定 PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT、 PHP_URL_USER、 PHP_URL_PASS、 PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 中指定的部分的 string。 (除了指定为 PHP_URL_PORT 后,将返回一个 integer 的值)。
返回值
对严重不合格的 URL,parse_url() 可能会返回 FALSE。
如果省略了 component 参数,将返回一个关联数组 array,在目前至少会有一个元素在该数组中。数组中可能的键有以下几种:
• scheme - 如 http
• host
• port
• user
• pass
• path
• query - 在问号 ? 之后
• fragment - 在散列符号 # 之后
如果指定了 component 参数, parse_url() 返回一个 string (或在指定为 PHP_URL_PORT 时返回一个 integer)而不是 array。如果 URL 中指定的组成部分不存在,将会返回 NULL。
eg:
$urla='https://www.lirongyaoper.com/index.php?name=lirongyao&age=27&sex=body&aihao=project&job=doctor&address=henan'; $urlres=parse_url($urla); lryp($urlres); //result: /*Array ( [scheme] => https [host] => lirongyaoper.com [path] => /index.php [query] => name=lirongyao&age=27&sex=body&aihao=project&job=doctor&address=henan )*/
相关文章
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~