parsephp
① php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
PHP
解析
URL函数:
parse_url详解
parse_url
—
解析
URL,返回其组成部分
说明
array
parse_url
(
string
$url
)
本函数解析一个
URL
并返回一个关联数组,包含在
URL
中出现的各种组成部分。
本函数不是用来验证给定
URL
的合法性的,只是将其分解为下面列出的部分。不完整的
URL
也被接受,parse_url()
会尝试尽量正确地将其解析。
参数
url
要解析的
URL
返回值
对严重不合格的
URL,parse_url()
可能会返回
FALSE
并发出
E_WARNING。否则会返回一个关联数组,其组成部分为(至少有一个):
scheme
–
如
http
host
port
user
pass
path
query
–
在问号
?
之后
fragment
–
在散列符号
#
之后
范例
parse_url()
例子
复制代码
代码如下:
<?php
$url
=
'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
?>
以上例程会输出:
Array
(
[scheme]
=>
http
[host]
=>
hostname
[user]
=>
username
[pass]
=>
password
[path]
=>
/path
[query]
=>
arg=value
[fragment]
=>
anchor
)
常常我们会传送一大串网址,然后要解析的话,只能不断地去切token来解析。但是在php中,一定要学会使用前人所写过的函式,这样开发速度才会快别人一截。当然,要解析网址的话,就得去找相关的指令,而今天要介绍的,就是php中的parse_url这个函式。
这个函式主要是用来解析网址,而首先先看一下这个函式原型,其官方描述如下:
mixed
parse_url
(
string
$url
[,
int
$component=
-1
]
)
而php官方举了一个例子,而我将他扩充如下,以方便讲解。
复制代码
代码如下:
<?php
$url
=
'http://username:password@hostname/path?arg1=value1&arg2=value2#anchor';
print_r(parse_url($url));
?>
首先,先看一下这个程式的输出结果
Array
(
[scheme]
=>
http
[host]
=>
hostname
[user]
=>
username
[pass]
=>
password
[path]
=>
/path
[query]
=>
arg1=value1&arg2=value2
[fragment]
=>
anchor
)
其中,scheme是指他走的路线,而host则是站台网址,user则是使用者名称,pass则是密码,path则是路径,query则是参数,fragment则是锚点。
而在“$component”的部份,则是有以下的参数可供传递。
PHP_URL_SCHEME
PHP_URL_HOST
PHP_URL_USER
PHP_URL_PASS
PHP_URL_PATH
PHP_URL_QUERY
PHP_URL_FRAGMENT
而这几个参数则分别代表了Array中的scheme、host、user、pass、path、query和fragment。
同样,举例来说,如果使用PHP_URL_PATH和PHP_URL_QUERY来说,以下为他的示范。
复制代码
代码如下:
<?php
$url
=
'http://username:password@hostname/path?arg1=value1&arg2=value2#anchor';
echo
nl2br(parse_url($url,
PHP_URL_PATH)."\n");
echo
nl2br(parse_url($url,
PHP_URL_QUERY)."\n");
?>
而输出结果将如下:
/path
arg1=value1&arg2=value2
② PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
其实,这是一个非常容易解决掉的问题。在我看来,似曾相识,呵呵,最近学JavaScript可是学会了使用var声明变量。
其实,在PHP中根本不需要使用var声明的,但是当一个变量作为一个类的成员变量的时候,使用var还是没有问题的。
在外部使用var就报错Parse
error:
syntax
error,
unexpected
T_VAR
in...,例如我的出错信息:
Parse
error:
syntax
error,
unexpected
T_VAR
in
D:\Apache2.2\htdocs\shirdrn\page\p2\pageUtil.inc
on
line
34
我在测试:在一个类的内部,使用一个自己定义的类对象作为这个类的成员时,出错了。
Address类对应的address.inc代码:
复制代码
代码如下:
<?php
class
Address
{
var
$road;
function
Address(){}
function
setRoad($road){
$this->road
=
$road;
}
}
?>
Person类及其测试代码为person.php如下:
复制代码
代码如下:
<?php
require("address.inc");
class
Person
{
var
$name;
var
$address;
function
Person(){
}
function
display(){
echo
"Name
:
".$this->name."<BR>";
echo
"Road
:
".$this->address->road."<BR>";
}
}
var
$p
=
new
Person();
$p->address
=
new
Address();
$p->address->setRoad("Chagnchun
Road");
$p->name
=
"Shirdrn";
$p->display();
?>
③ parse_url参见
在PHP中,有几个内置函数用于处理和解析文件或路径的相关信息。让我们逐个了解一下它们的功能。
首先,pathinfo() 函数是一个非常实用的工具,它能够分解一个路径,返回路径中的各个组成部分。这个函数会返回一个关联数组,包括路径的目录部分、文件名部分以及可能的扩展名等信息。这对于需要处理文件路径的场景非常有用。
另一个相关的函数是 parse_str(),它的作用是解析一个字符串,将其解析为变量。这个函数通常用于处理URL查询字符串或HTTP POST数据,将其中的键值对转换为PHP变量,方便进一步的操作和存储。
对于单独获取路径中的目录部分,可以使用 dirname() 函数。它接收一个路径作为参数,返回的是路径中从根目录到文件或目录名的完整部分,不包括文件名。这对于需要提取文件目录路径时非常实用。
最后,如果你只需要文件名部分,basename() 函数则是你的选择。它同样接收一个路径,返回的是路径的最后一个部分,即文件名,不包含路径信息。这对于处理文件名或下载链接时非常有用。
总的来说,这些函数在PHP中扮演着重要的角色,帮助开发者轻松处理和操作文件路径,提高代码的效率和可读性。
(3)parsephp扩展阅读
(PHP 4, PHP 5)