php 常用

零:重要的PHP超级全局变量

1、$_SERVER

$_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境的有关信息。根据服务器不同,$_SERVER中的变量值和变量个数会有差别,不过一般都可以找到CGI1.1规范中定义的变量。其中包括:

$_SERVER[ 'HTTP_REFERER' ] ; 引导用户到达当前位置的页面的URL ;

$_SERVER[ 'REMOTE_ADDR‘ ] ; 客户IP地址 ;

$_SERVER[ ’REQUEST_URI‘ ] ; URL的路径部分。如果URL是[url]http://www.example.com/blog/apache/index.html[/url] ,那么URI就是/blog/apache/index.html 。

$_SERVER[ 'HTTP_USER_AGENT' ] ; 客户的用户代理,一般会提供操作系统和浏览器的有关信息。

2、$_GET

$_GET超级全局变量包含使用GET方法传递的参数的有关信息。如果请求URL为[url]http://www.example.com/index.html?cat=apache&id=157[/url], 就可以使用$_GET超级全局变量访问如下变量:

$_GET[ 'cat' ] = "apache" ;

$_GET[ 'id' ]   = "157" ;

默认情况下,要访问通GET方法传递的变量,$_GET超级全局变量是唯一的途径。

3、$_POST

$_POST超级全局变量包含用POST方法传递的参数的有关信息。

<form caction="subscribe.php" method = "post">

<p>

Email address : <br>

<input type="text" name="email" size="20" maxlength="so" value="">

</p>

<p>

Password : <br>

<input type="password" name="pswd" size="20" maxlength="15" value="">

</p>

<p>

<input type="submit" name="subscribe" value="subscribe!">

</p>

</form>

通过脚本subscribe.php,就可以使用下面的POST变量:

$_POST[ 'email' ] = " jason@example.com " ;

$_POST[ 'pswd' ] = "rainyday" ;

$_POST[ 'subscribe' ] = "subscribe!" ;

与$_GET一样,在默认情况下,$_POST超级全局变量是访问POST变量的唯一途径。

4、$_COOKIE

$_COOKIE超级全局变量存储了通过HTTP cookie传递到脚本的信息。这些cookie一般是由以前执行的PHP脚本通过PHP函数setcookie ( ) 设置的。例如,假设使用 setcookie ( )存储了一个名为 example.com、值为ab2213的cookie。以后就可以通过调用$_COOKIE[ ' example.com' ]来获得这个值。

5、$_FILES

$_FILES超级全局变量包含通过POST方法向服务器上传的数据的有关信息。这个超级全局变量与其他的变量有所不同,它是一个二维数组,包含5个元素。第一个下标标示表单的文件上传元素名;第二个下标是五个预定义下标之一,这些下标描述了上传文件的某个属性:

△  $_FILES[ 'upload-name' ][ 'name' ]; 从客户端向服务器上传文件的文件名;

△  $_FILES[ 'upload-name' ][ 'type' ]; 上传文件的MIME类型,这个变量是否赋值取决于浏览器的功能。

△  $_FILES[ 'upload-name' ][ 'size' ];  上传文件的大小(以字节为单位);

△  $_FILES[ 'upload-name' ][ 'tmp_name' ]; 上传之后,将此文件移到最终位置之前赋予的临时名。

△  $_FILES[ 'upload-name' ][ 'error' ]; 上传状态码。尽管这个变量的名为 error ,但实际上在成功的情况下也会填写这个变量。它有五个可能的值:

■  UPLOAD_ERR_OK   文件成功上传

■  UPLOAD_ERR_INI_SIZE  文件大小超出了 upload_max_filesize 指令所指定的最大值。

■  UPLOAD_ERR_FORM_SIZE  文件大小超出了MAX_FILE_SIZE 隐藏表单域参数(可选)指定的最大值。

■  UPLOAD_ERR_PARTIAL  文件只上传了一部分

■  UPLOAD_ERR_NO_FILE  上传表单中没有指定文件

6、$_ENV

$_ENV超级全局变量提供PHP解析所在服务器环境的有关信息。此数组中的变量包括:

△  $_ENV[ 'HOSTNAME' ]  服务器的主机名

△  $_ENV[ 'SHELL' ]  系统 shell

7、$_REQUEST

$_REQUEST超级全局变量是一个全能选手,它记录了通过各种方法传递给脚本的变量,特别是GET ,POST 和 COOKIE 。 这些变量的顺序不依赖于它们在发送脚本中出现的顺序,而是依赖于 variables_order 配置指令所指定的顺序。建议少用这个超级变量,因为它不够安全。

8、$_SESSION

$_SESSION 超级全局变量包含与所有会话有关的信息。注册会话信息能为你提供便利,这样就能在整个网站中引用这些会话信息,而无需通过GET或POST显示的传递数据。

9、$GLOBALS

$GLOBALS 超级全局变量数组可以认为是超级全局变量的超集,包含全局作用域内的所有变量。执行下面的代码可以查看$GLOBALS 中所有的变量。

print ' <pre>' ;

print_r ($GLOBALS);

print ' </pre>' ;

一 :php处理字符串常用函数

1查找字符位置函数:

strpos($str,search,[int]):查找search在$str中的第一次位置从int开始;

stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感

strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int开始

strripos($str,search,[int]):同上,该函数对大小写不敏感

2、提取子字符串函数(双字节)

substr($str,int start[,int length]):从$str中strat【下标(0,length-1)】位置开始提取[length长度的字符串]。

strstr($str1,$str2):从$str1(第一个的位置)搜索$str2并从它开始截取到结束字符串;若没有则返回FALSE。

stristr() 功能同strstr,只是不区分大小写。

strrchr() 从最后一次搜索到的字符处返回;用处:取路径中文件名

3、替换字符串的PHP字符串函数

str_replace(search,replace,$str):从$str中查找search用replace来替换

str_ireplace(search,replace,$str):同上,该函数对大小写不敏感

strtr($str,search,replace):这个函数中replace不能为"";

substr_replace($Str,$rep,$start[,length]):$str原始字符串,$rep替换后的新字符串,$start起始位置,$length替换的长度,该项可选

4、字符长度

int strlen($str)

5、比较字符函数

int strcmp($str1,$str2):$str1>=<$str2分别为正1,0,-1(字符串比较)

strcasecmp() 同上(不分大小写)

strnatcmp("4","14") 按自然排序比较字符串

strnatcasecmp() 同上,(区分大小写)

6、分割成数组的PHP字符串函数

str_split($str,len):把$str按len长度进行分割返回数组

split(search,$str[,int]):把$str按search字符进行分割返回数组int是分割几次,后面的将不分割

expload(search,$str[,int])

7、去除空格:

ltrim()、rtrim()、trim()

8、加空格函数

chunk_split($str,2):向$str字符里面按2个字符就加入一个空格;

9、chr、ord--返回指定的字符或ascii

10、HTML代码有关函数

nl2br():使\n转换为<br>。

strip_tags($str[,'<p>']):去除HTML和PHP标记

在$str中所有HTML和PHP代码将被去除,可选参数为html和PHP代码作用是将保留

可选参数所写的代码。

如:echo strip_tags($text, '<br><p>');

htmlspecialchars($str[,参数]):页面正常输出HTML代码参数,是转换方式

11、字符大小写转换的PHP字符串函数

strtolower($str): 字符串转换为小写

strtoupper($str): 字符串转换为大写

ucfirst($str): 将函数的第一个字符转换为大写

ucwords($str): 将每个单词的首字母转换为大写

12、数据库相关的PHP字符串函数

addslashes($str):使str内单引号(')、双引号(")、反斜线(\)与 NUL

字符串转换为\',\",\\。

magic_quotes_gpc = On :自动对 get,post,cookie的内容进行转义

get_magic_quotes_gpc():检测是否打开magic_quotes_gpc

stripslashes(): 去除字符串中的反斜杠

13 确定字符串长度

* int strlen(string str)

14 比较两个字符串

* 1、strcmp函数对两个字符串进行二进制安全的比较,并区分大小写

* int strcmp(string str1,string str2)

* 2、以不区分大小写的方式比较两个字符串

* int strcasecmp(string str1,string str2)

* 3、求两个字符串相同部分

* int strspn(string str1,string str2)

* 4、求两个字符串的不同部分

* int strcspn(string str1,string str2)

15 处理字符串大小写

* 1、将字符串全部转换为小写

* string strtolower(string str)

* 2、将字符串全部转化为大写

* string strtoupper(string str)

* 3、将字符串第一个字符大写

* string ucfirst(string str)

* 4、将字符串中的每个单词变成大写

* string ucword(string str)

16 字符串与HTML相互转换

* 1、将换行符转换为HTML终止标记

* string bl2br(string str)

* 2、将特殊字符转换wieldHTML等价形式

* string htmlentities(string str[,int quote_style[,int charset]])

* 3、使用特殊的HTML字符用于其他目的

* string htmlspecialchars(string str[,int quote_style[,string charset]])

* 4、将文本转换为HTML等价形式

* array get_html_translaction_table(int table[,int quote_style])

* 5、创建一个自定义的转换清单

* string strtr(string str,array replacements)

* 6、将HTML转换为纯文本

* string strip_tags(string str[,string allowable_tags])

17 正则表达式函数的替代函数

* 1、strtok函数根据预定义的字符串列表来解析字符串

* string strtok(string str,string tonens)

* 2、根据预定义的定界符分析字符串

* array explode(string separator,string str[,int limit])

* 3、将数组转换为字符串

* string implode(string delimiter, array array)

* 4、解析复杂的字符串

* int strpos(string str,string substr[,int offset])

* 5、找到字符串的最后一次出现

* int strrpos(string str,char substr[,offset])

* 6、用另外一个字符串替代字符串的所有实例

* mixed str_replace(string occurrence,mixed replacement,mixed str[,int count])

* 7、获取字符串的一部分strstr返回字符串中预定义字符串第一次出现开始的剩余部分

* string strstr(string str,string occurrence)

* 8、根据预定义的偏移返回字符串一部分

* string substr(string str,int start[,ing length])

* 9、确定字符串出现的频率

* int substr_count(string str,string substring)

* 10、用另一个字符串替换一个字符串的一部分

* string substr_replace(string str,string replacement,int start[,int length])

18 填充和剔除字符串

* 1、从字符串开始出裁剪字符

* string ltrim(string str[,string charliset])

* 2、从字符串结尾裁剪字符

* string rtrim(string str[,string charliset])

* 3、从字符串两端裁剪字符

* string trim(string str[,string charliset])

* 4、填充字符串

* string str_pad(string str,int length[,string pad_string[,int pad_type]])

19字符和单词计数

* 1、字符串中字符计数

* mixed count_chars(string str[,mode])

* 2、字符串中单词总数计数

* mixed str_word_count(string str[,int format])

二、数组操作的基本函数
1 数组的键名和值
array_values($arr); 获得数组的值
array_keys($arr);获得数组的键名
array_flip($arr);数组中的值与键名互换(如果有重复前 面的会被后面的覆盖)
in_array("apple",$arr);在数组中检索apple
array_search("apple",$arr); 在数组中检索apple ,如果存在返回键名
array_key_exists("apple",$arr);检索给定的键名是否存在数组中
isset($arr[apple]): 检索给定的键名是否存在数组中

2 数组的内部指针
current($arr);返回数组中的当前单元
pos($arr);返回数组中的当前单元
key($arr);返回数组中 当前单元的键名
prev($arr);将数组中的内部指针倒回一位
next($arr);将数组中的内部指针向前移动一位
end($arr); 将数组中的内部指针指向最后一个单元
reset($arr;将数组中的内部指针指向第一个单元
each($arr);将返回数组当前元素 的一个键名/值的构造数组,并使数组指针向前移动一位
list($key,$value)=each($arr);获得数组当前元素的键名和值

3 数组和变量之间的转换
extract($arr);用 于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
注:(第二个参数很重要,可以看手册使用)使用 方法  echo $a;
compact(var1,var2,var3);用给定的变量名创建一个数组

4 数组的分段和填充
数组的分段
array_slice($arr,0,3); 可以将数组中的一段取出,此函数忽略键名
array_splice($arr,0,3,array("black","maroon"));可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除

5 分割多个数组
array_chunk($arr,3,TRUE);可以将一个数组分割成多个,TRUE为保留原数 组的键名

6 数组的填充
array_pad($arr,5,'x'); 将一个数组填补到制定长度

7 数组与栈
array_push($arr,"apple","pear"); 将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
array_pop($arr);将数组栈的最后一个元素弹出(出栈)

8 数组与列队
array_shift($arr);数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改 为从零技术 , 文字键名不变)
array_unshift($arr,"a",array(1,2));在数组的开头插入一个或多个元素

9 回调函数
array_walk($arr,'function','words');使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
array_mpa("function",$arr1,$arr2);可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
array_filter($arr,"function");使用回调函数过滤数组中的每个元素,如果回调函数为 TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变
array_reduce($arr,"function","*"); 转化为单值函数(*为数组的第一个值)

10数组的排序
通过元素值对数组排序
sort($arr);由小到大的顺序排序(第二个参数为按什么 方式排序)忽略键名的数组排序
rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
usort($arr,"function"); 使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
asort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
arsort($arr); 由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
uasort($arr,"function");使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序

通过键名对数组排序
ksort($arr);按照键名 正序排序
krsort($arr);按照键名逆序排序
uksort($arr,"function");使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)

自然排序法排序
natsort($arr);自然排序 (忽略键名)
natcasesort($arr);自然排序(忽略大小写,忽略键名)

12 数组的计算
数组元素的求和
array_sum($arr);对数 组内部的所有元素做求和运算

13 数组的合并
array_merge($arr1,$arr2);合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会做覆盖操作,而是附加到后面)
“+”$arr1+$arr2;对于相同的键名只保留后一个
array_merge_recursive($arr1,$arr2); 递归合并操作,如果数组中有相同的字符串键名,这些值将被合并到一个数组中去。如果一个值本身是一个数组,将按照相应的键名把它合并为另一个数组。当数组具有相同的数组键名时,后一个值将不会覆盖原来的值,而是附加到后面

14 数组的差集
array_diff($arr1,$arr2);返回差集结果数组
array_diff_assoc($arr1,$arr2,$arr3); 返回差集结果数组,键名也做比较

数组的交集
array_intersect($arr1,$arr2);返回交集结果数组
array_intersect_assoc($arr1,$arr2); 返回交集结果数组,键名也做比较

其他的数组函数
range(0,12);创建一个包含指 定范围单元的数组
array_unique($arr);移除数组中重复的值,新的数组中会保留原始的键名
array_reverse($arr,TRUE); 返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
//srand((float)microtime()*10000000); 随机种子触发器
array_rand($arr,2);从数组中随机取出一个或 多个元素
shuffle($arr);将数组的顺序打乱

 

三 php时间函数

1,年-月-日
echo date('Y-m-j');
2009-05-29
echo date('y-n-j');
09-2-29

大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。

echo date('Y-M-j');
2009-May-6

echo date('Y-m-d');
2009-05-06

大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。

echo date('Y-M-j');
2009-Feb-6

echo date('Y-F-jS');
2009-February-6th

大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。
小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。

2,时:分:秒

默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。

echo date('g:i:s a');
5:56:57 am

echo date('h:i:s A');
05:56:57 AM

小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。

echo date('G:i:s');
14:02:26

大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数

小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。

3,闰年、星期、天

echo date('L');
今年是否闰年:0

echo date('l');
今天是:Tuesday

echo date('D');
今天是:Tue

大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。

echo date('w');
今天星期:2

echo date('W');
本周是全年中的第 06 周

小写w表示星期几,数字形式表示
大写W表示一年中的星期数

echo date('t');
本月是 28 天

echo date('z');
今天是今年的第 36 天

小写t表示当前月份又多少天
小写z表示今天是本年中第几天

4,其他

echo date('T');
UTC
大写T表示服务器的时间区域设置

echo date('I');
0
大写I表示判断当前是否为夏令时,为真返回1,否则为0

echo date('U');
1170769424
大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。

echo date('c');
2007-02-06T14:24:43+00:00
小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。

echo date('r');
Tue, 06 Feb 2009 14:25:52 +0000
小写r表示RFC822日期。

四文件即目录的操作

1 获得文件名:
basename();
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
eg:

$path = "/home/httpd/html/index.php";
$file = basename($path,".php"); // $file is set to "index"

2 得到目录部分:
dirname();
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
eg:

$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"

3 得到路径关联数组
pathinfo();
得到一个指定路径中的三个部分:目录名,基本名,扩展名。
eg:

$pathinfo = pathinfo("www/test/index.html");
var_dump($pathinfo);
// $path['dirname']
$path['basename']
$path['extenssion']

文件类型
1. filetype();
返回文件的类型。可能的值有 fifo,char,dir,block,link,file 和 unknown。
eg:

echo filetype('/etc/passwd'); // file
echo filetype('/etc/');        // dir

得到给定文件有用信息数组(很有用)

1. fstat();
通过已打开的文件指针取得文件信息
获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。
eg:

// 打开文件
$fp = fopen("/etc/passwd", "r");
// 取得统计信息
$fstat = fstat($fp);
// 关闭文件
fclose($fp);
// 只显示关联数组部分
print_r(array_slice($fstat, 13));

2. stat()
获取由 filename 指定的文件的统计信息(类比fstat())

计算大小
1. filesize()
返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。
eg:

// 输出类似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

2. disk_free_space()
获得目录所在磁盘分区的可用空间(字节单位)
eg

// $df 包含根目录下可用的字节数
$df = disk_free_space("/");
//在 Windows 下:
disk_free_space("C:");
disk_free_space("D:");

3. disk_total_space()
返回一个目录的磁盘总大小
eg:(同上,换掉函数)

另:如需要计算一个目录大小,可以编写一个递归函数来实现

代码
function dir_size($dir){
$dir_size = 0;
if($dh = @opendir($dir)){
while(($filename = readdir($dh)) != false){
if($filename !='.' and $filename !='..'){

if(is_file($dir.'/'.$filename)){
$dir_size +=filesize($dir.'/'.$filename);

}else if(is_dir($dir.'/'.$filename)){

$dir_size +=dir_size($dir.'/'.$filename);
}
}

}#end while

}# end opendir

@closedir($dh);
return $dir_size;
} #end function

访问与修改时间
1. fileatime(): 最后访问时间
2. filectime(): 最后改变时间(任何数据的修改)
3. filemtime(): 最后修改时间(指仅是内容修改)

文件的I/O操作

1. fopen -- 打开文件或者 URL

mode 说明
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,
'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE
eg:

$handle = fopen("/home/rasmus/file.txt", "r");

2. file -- 把整个文件读入一个数组中(此函数是很有用的)
和 file_get_contents() 一样,只除了 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败 file() 返回 FALSE。
eg:

代码
$lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode('', file ('http://www.example.com/'));

3. fgets -- 从文件指针中读取一行
从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
eg:

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}

4. fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记
和 fgets() 相同,只除了 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

可以用可选的第三个参数指定哪些标记不被去掉

另:对的目录的操作:
1. opendir -- 打开目录句柄,打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
2. readdir -- 从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
eg:

代码
// 注意在 4.0.0-RC2 之前不存在 !== 运算符

if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
  
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
   
while ($file = readdir($handle)) {
echo "$file\n";
}
     closedir($handle);
}

3. scandir -- 列出指定路径中的文件和目录(很有用),返回一个 array,包含有 directory 中的文件和目录。
默认的排序顺序是按字母升序排列。如果使用了可选参数 sorting_order(设为 1),则排序顺序是按字母降序排列。
eg:

$dir    = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);   

另外注:

对文件属性的操作(操作系统环境不同,可能有所不一样,这点要注意)

1文件是否可读:

       boolis_readable ( string filename )

如果由 filename 指定的文件或目录存在并且可读则返回 TRUE

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。

2 文件是否可写

bool is_writable ( string filename )

如果文件存在并且可写则返回 TRUEfilename 参数可以是一个允许进行是否可写检查的目录名。

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制

   3  检查文件是否存在

    boolfile_exists ( string filename )

如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE

目录的操作

chdir 
□ 适用版本:PHP3, PHP4   
□ 函数功能:改变目录 
□ 函数语法:int chdir (string directory)   
□ 函数说明:改变 PHP 的工作目录到另外一个目录中, 如果没有办法改变目录, 函数会返
回 FALSE, 否则返回 TRUE。 
□ 范例程序:

<?php 
$o=chdir("/php1"); 
If($o){ 
echo "更改路径成功<br>\n"; 

else 

echo "更改路径失败<br>\n"; 

?>

□ 执行结果:如果路径存在, 则会印出下面的信息:更改路径成功如果路径不存在, 则会印
出下面的信息: Waring: ChDir: No such file or irectory (errno 2) in c:\apache\htdocs\test.php on 
line 2 更改路径失败 
□ 参考命令:无

dir

□ 适用版本:PHP3, PHP4   
□ 函数功能:目录的 class。 
□ 函数语法:new dir (string directory)   
□ 函数说明:读取一个目录的虚拟面向对象机制, 函数执行以后, directory 参数给定的目录
会被打开, 这个函数可以与其他的目录函数一起使用, 例如: readdir()、 rewinddir()、 closedir()。 
□ 范例程序:

<?php 
$d=dir("/Downloads");   echo "Handle: ".$d->handle."<br>\n"; 
echo "Path: ".$d->path."<br>\n"; 
while($entry=$d->read()){ 
echo $entry."<br>\n"; 

$d->close(); 
?>

□ 执行结果:(此结果会因电脑环境而异) Handle: Resource id #1 Path: /Downloads . .. nero 
089001D000012.Di manual.rtf 089001D000012.sw gozil35-DownloadPatch.exe 
gozil35-DownloadPatch.exe.txt manual_a-1.pdf manual_m-x.pdf   
□ 参考命令:无

closedir

□ 适用版本:PHP3, PHP4   
□ 函数功能:关闭目录的控制 
□ 函数语法:void closedir (int dir_handle)   
□ 函数说明:关闭由 dir_handle 所设置的目录控制。这个目录控制必须在之前曾通过 
opendir() 打开过。 
□ 范例程序:

<?php 
$handle=opendir('.'); 
echo "目录的操作:$handle<br>"; 
echo "目录下的文件<br>"; 
while(($file=readdir($handle))!==false){ 
echo "$file<br>"; 

closedir($handle); 
?>

□ 执行结果:(此结果会因电脑环境而异) 目录的操作:Resource id #1 目录下的文件 . . . 
test.php 
□ 参考命令:无

opendir   
□ 适用版本:PHP3, PHP4   
□ 函数功能:打开目录的控制。 
□ 函数语法:int opendir (string path) 。 
□ 函数说明:返回一个目录的控制, 给接下来的 closedir()、readdir() 及 rewinddir() 等函数
使用。在下面的范例中, 打开了一个目前正在工作的目录控制。 
□ 范例程序:

<?php 
$handle=opendir('.'); 
echo "目录的操作:$handle<br>"; 
echo "目录下的文件<br>"; 
while(($file=readdir($handle))!==false){ 
   echo "$file<br>"; 

closedir($handle); 
?>

□ 执行结果:(此结果会因电脑环境而异) 目录的操作:Resource id #1 目录下的文件 . . . 
test.php 
□ 参考命令:无

readdir

□ 适用版本:PHP3, PHP4   
□ 函数功能:从目录中读取文件名的数据。 
□ 函数语法:string readdir (int dir_handle)   
□ 函数说明:返回目录中下一个文件的文件名。在下面的第一个范例中, 会将工作目录下
的文件名全部取出并且印出。 readdir() 将会返回 . 及 .. 符号, 假如不想要这两个输出, 可
以想办法将他们删去, 如同范例 2 所示。 
□ 范例程序 1:

<?php 
$handle=opendir('.'); 
echo "目录的操作:$handle<br>"; 
echo "目录下的文件<br>"; 
while(($file=readdir($handle))!==false){ 
   echo "$file<br>"; 
}   closedir($handle); 
?>

□ 执行结果:(此结果会因电脑环境而异) 目录的操作:Resource id #1 文件 . . . counter.php 
HomePage1.txt index.html manager.php mybbs.html test.php   
□ 范例程序:

<?php 
$handle=opendir('.'); 
while($false!==($file=readdir($handle))){ 
    if($file != "." && $file != ".."){ 
    echo "$file\n"; 

closedir($handle); 
?>

□ 执行结果:(此结果会因电脑环境而异) test.php   
□ 参考命令:无

rewinddir

□ 适用版本:PHP3, PHP4   
□ 函数功能:倒转目录的控制。 
□ 函数语法:void rewinddir (int dir_handle)   
□ 函数说明:重置 dir_handle 的目录指针到目录的开始位置。 
□ 范例程序:

<?php 
$handle=opendir('/downloads'); 
echo "目录的操作:$handle<br>"; 
echo "目录下的文件<br>"; 
while(($file=readdir($handle))!==false){ 
    echo "$file<br>"; 

rewindir($handle); 
echo "目录的操作:$handle<br>"; 
echo "目录下的文件<br>"; 
while (($file=readdir($handle))!==false){     echo "$file<br>"; 

closedir($handle); 
?>

□ 执行结果:目录的操作:Resource id #1 目录下的文件 . . . adsl_all.doc adsl_faq.doc 申请
表件一(90).xls Gcime1.exe 申请表件二(90).doc 目录的操作:Resource id #1 目录下的文
件 . . . adsl_all.doc adsl_faq.doc 申请表件一(90).xls Gcimel.exe 申请表件二(90).doc 
□ 参考命令:无 

四: php常用到的sql语句

常规查询
一、查询表内容:
     select * from `tablename`
     select `nicheng` from `tablename`
     select distinct `nicheng` from `tablename` 
二、where查询:
     select `id` from `tablename` where `id`>10 or (`id`<5)
三、in用法:
     select * from `tablename` where `nicheng` in ('萧明', '秦城') 
四、between用法:
     select * from `tablename` where `id` between '003' and '009'
五、排序查询(ASC由小往大/DESC由大往小):
     select id , mima from `tablename` 
     where `nicheng`='萧明'
     order by `id` ASC
     limit 0 , 30
六、查询表中数据项数:
     select count(*) from `tablename`
七、查询字段中内容数量:
     select `nicheng`, count(*) from `tablename` group by `nicheng`

模糊查询
     SQL的模式匹配允许使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符):
一、查询以“萧”开头的数据: 
     select * from `tablename` where `nicheng` like "萧%" 
二、查询以“城”结尾的数据: 
     select * from `tablename` where `nicheng` like "%城" 
三、查询包含一个“敬”的数据:
     select * from `tablename` where `nicheng` like "%敬%"  
四、查询正好包含3个字符的名字,使用“_”模式字符: 
     select * from `tablename` where `nicheng` like "___"   
     正则表达式查询:
五、查询以z或Z开头的数据:
     select * from `tablename` where `nicheng` regexp "^[zZ]"  
     select * from `tablename` where `nicheng` regexp "^[a-zA-Z]"  
六、查询以g或G结尾的数据:
     select * from `tablename` where `nicheng` regexp "g$"

多表查询:
一、多表查询:
       $sql=mysql_query("select * from `tb_student`,`tb_sscore` where tb_=tb_ and tb_=$sno",$conn);
二、表的别名查询统计:
       $sql=mysql_query("select * from `tb_student` as tb_s,`tb_sscore` as tb_c where tb_=tb_ and tb_=$sno",$conn);
三、合并结果集:
  $sql=mysql_query("select `userid`,`username`,`sex`,`age` from `tb_worker1` union select `ygid`,`name`,`sex`,`age` from `tb_worker2`",$conn);

联合查询:
一、多表联合查询:
$sql=mysql_query("
     select * from `tablename` where `nicheng` like "%敬%"
     union 
     select * from `info` where `nicheng` like "张%"",$conn);
二、联合查询结果排序:
$sql=mysql_query("select * from `tb_1` union all select * from `tb_2` order by `age` desc",$conn);
三、条件联合查询:
$sql=mysql_query("select `pubname` from `tb_pub` group by `pubname` having `pubname`='人民邮电出版社' or `pubname`='机械工业出版社' union all select `pubname` from `tb_pub` group by `pubname` having `pubname`<>'人民邮电出版社' and `pubname`<>'机械工业出版社'",$conn);
SELECT t1 . * , , 
FROM uchome_tagspace t1
LEFT JOIN uchome_mtag t2 ON = 
WHERE =1

多表查询

一、简约嵌套查询:
       $sql=mysql_query("select * from `tb_student_score_info` where `sid` in (select `sid` from `tb_student_info` where `sid`=$sno)",$conn);
二、复杂嵌套查询:
$sql=mysql_query("select * from `tb_laborage` where `name` in (select `name` from `tb_dept` where `name` in (select `name` from `tb_personnel` where `knowledge`='本科'))",$conn);
三、嵌套查询应用:
$sql=mysql_query("select * from `tb_laborage` where `jbgz` ".$_POST[tj]." any(select `jbgz` from `tb_laborage` where name='".$_POST[name]."')",$conn);
四、IN子查询:
     1、限定范围查询:
      $sql=mysql_query("select * from `tb_student_score` where `sid` in (select `sid` from `tb_student_score` where `sid` between $from and $to) ",$conn);
      2、查询记录信息:
$sql=mysql_query("select * from `tb_bookinfo` where `bookname` in (select `bookname` from `tb_bookinfo` where `bookname` like '%$bookname%') ",$conn);

排序分组
一、对数据进行降序查询:
      $sql=mysql_query("select * from `tb_sp` order by `sl` desc",$conn);
二、对数据进行多条件排序查询:
      $sql=mysql_query("select * from `tb_goods` order by `sl` desc,dj asc",$conn); 
三、对统计结果进行排序:
$sql=mysql_query("select *,sum(num) as totalnum from `tb_bookinfo` group by `bookname` order by `totalnum` desc",$conn); 
四、单列数据分组统计:
  $sql=mysql_query("select *,sum(num) as totalnum from `tb_bookinfo` group by `bookname` order by `totalnum` desc",$conn); 
五、多列数据分组统计:
  $sql=mysql_query("select *,sum(xcsl) as xc,sum(x ssl) as xs from `tb_book1` group by `bookname` ",$conn); 
六、多表分组统计:
  $sql=mysql_query("select *,sum(tb_xs.x ssl) as xsl,sum(tb_) as kcl from `tb_bk`,`tb_xs` where tb_=tb_ group by `bookname` ",$conn);

聚集函数
一、汇总统计查询:
       $sql=mysql_query("select sum(yy) as sumyy,sum(yw) as sumyw,sum(sx) as sumsx,sum(ls) as sumls from `tb_student_score` ",$conn);  
二、均值统计查询:
$sql=mysql_query("select avg(yy) as avgyy,avg(yw) as avgyw,avg(sx) as avgsx,avg(ls) as avgls from `tb_student_score` ",$conn);  
三、最小值统计查询:
$sql=mysql_query("select * from `tb_gemsell` where `outprice-inprice` in (select min(`outprice-inprice`) as minsell from `tb_gemsell`) ",$conn);  
四、最大值统计查询:
       $sql=mysql_query("select * from `tb_sale` where `sale` in (select max(sale) from `tb_sale` where month(xdate)=$yue and year(xdate)=2005)",$conn);  
五、统计大于某值记录:
       $sql=mysql_query("select count(*) as total from `tb_sale` where `sale`>$num",$conn);

五 PHP数据库函数

1、mysql_connect()-建立数据库连接
格式:
    resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])
例:
    $conn = @mysql_connect("localhost", "username", "password") or die("不能连接到Mysql Server");
说明:使用该连接必须显示的关闭连接

2、mysql_pconnect()-建立数据库连接
格式:
    resource mysql_pconnect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])
例:
    $conn = @mysql_pconnect("localhost", "username", "password") or dir("不能连接到Mysql Server");
说明:使用该连接函数不需要显示的关闭连接,它相当于使用了连接池

3、mysql_close()-关闭数据库连接
例:
    $conn = @mysql_connect("localhost", "username", "password") or die("不能连接到Mysql Server");
    @mysql_select_db("MyDatabase") or die("不能选择这个数据库,或数据库不存在");
    echo "你已经连接到MyDatabase数据库";
    mysql_close();

4、mysql_select_db()-选择数据库
格式:
    boolean mysql_select_db(string db_name [, resource link_id])
例:
    $conn = @mysql_connect("localhost", "username", "password") or die("不能连接到Mysql Server");
    @mysql_select_db("MyDatabase") or die("不能选择这个数据库,或数据库不存在");

5、mysql_query()-查询MySQL
格式:
    resource mysql_query (string query, [resource link_id])
例:
    $linkId = @mysql_connect("localhost", "username", "password") or die("不能连接到Mysql Server");
    @mysql_select_db("MyDatabase") or die("不能选择这个数据库,或者数据库不存在");
    $query = "select * from MyTable";
    $result = mysql_query($query);
    mysql_close();
说明:若SQL查询执行成功,则返回资源标识符,失败时返回FALSE。若执行更新成功,则返回TRUE,否则返回FALSE

6、mysql_db_query()-查询MySQL
格式:
    resource mysql_db_query(string database, string query [, resource link_id])
例:
    $linkId = @mysql_connect("localhost", "username", "password") or die("不能连接到MysqlServer");
    $query = "select * from MyTable";
    $result = mysql_db_query("MyDatabase", $query);
    mysql_close();
说明:为了使代码清晰,不推荐使用这个函数调用

7、mysql_result()-获取和显示数据
格式:
    mixed mysql_result (resource result_set, int row [, mixed field])
例:
    $query = "select id, name from MyTable order by name";
    $result = mysql_query($query);
    for($count=0;$count<=mysql_numrows($result);$count++)
    {
        $c_id = mysql_result($result, 0, "id");
        $c_name = mysql_result($result, 0, "name");
        echo $c_id,$c_name;
    }
说明:最简单、也是效率最低的数据获取函数

8、mysql_fetch_row()-获取和显示数据
格式:
    array mysql_fetch_row (resource result_set)
例:
    $query = "select id, name from MyTable order by name";
    $result = mysql_query($query);
    while (list($id, $name) = mysql_fetch_row($result)) {
        echo("Name: $name ($id) <br />");
    } 
说明:函数从result_set中获取整个数据行,将值放在一个索引数组中。通常会结使list()函数使用

9、mysql_fetch_array()-获取和显示数据
格式:
    array mysql_fetch_array (resource result_set [, int result_type])
例:
    $query = "select id, name from MyTable order by name";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $id = $row["id"];
        $name = $row["name"];
        echo "Name: $name ($id) <br />";
    }
又例:
    $query = "select id, name from MyTable order by name";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result, MYSQL_NUM)) {
        $id = $row[0];
        $name = $row[1];
        echo "Name: $name ($id) <br />";
    }
说明:
result_type的值有:
MYSQL_ASSOC: 字段名表示键,字段内容为值
MYSQL_NUM: 数值索引数组,操作与mysql_fetch_ros()函数一样
MYSQL_BOTH: 即作为关联数组又作为数值索引数组返回。result_type的默认值。

10、mysql_fetch_assoc()-获取和显示数据
格式:
    array mysql_fetch_assoc (resource result_set)
相当于调用 mysql_fetch_array(resource, MYSQL_ASSOC);

11、mysql_fetch_object()-获取和显示数据
格式:
    object mysql_fetch_object(resource result_set)
例:
    $query = "select id, name from MyTable order by name";
    while ($row = mysql_fetch_object($result)) {
        $id = $row->id;
        $name = $row->name;
        echo "Name: $name ($id) <br />";
    }
说明:返回一个对象,在操作上与mysql_fetch_array()相同

12、mysql_num_rows()-所选择的记录的个数
格式:
    int mysql_num_rows(resource result_set)
例:
    query = "select id, name from MyTable where id > 65";
    $result = mysql_query($query);
    echo "有".mysql_num_rows($result)."条记录的ID大于65";
说明:只在确定select查询所获取的记录数时才有用。

13、mysql_affected_rows()-受Insert,update,delete影响的记录的个数
格式:
    int mysql_affected_rows([resource link_id])
例:
    $query = "update MyTable set name='CheneyFu' where id>=5";
    $result = mysql_query($query);
    echo "ID大于等于5的名称被更新了的记录数:".mysql_affected_rows();
说明:该函数获取受INSERT,UPDATE或DELETE更新语句影响的行数

14、mysql_list_dbs()-获取数据库列表信息
格式:
    resource mysql_list_dbs([resource link_id])
例:
    mysql_connect("localhost", "username", "password");
    $dbs = mysql_list_dbs();
    echo "Databases: <br />";
    while (list($db) = mysql_fetch_rows($dbs)) {
        echo "$db <br />";
    }
说明:显示所有数据库名称

15、mysql_db_name()-获取数据库名
格式:
    string mysql_db_name(resource result_set, integer index) 
说明:该函数获取在mysql_list_dbs()所返回result_set中位于指定index索引的数据库名

16、mysql_list_tables()-获取数据库表列表
格式:
    resource mysql_list_tables(string database [, resource link_id])
例:
    mysql_connect("localhost", "username", "password");
    $tables = mysql_list_tables("MyDatabase");
    while (list($table) = mysql_fetch_row($tables)) {
        echo "$table <br />";
    } 
说明:该函数获取database中所有表的表名

17、mysql_tablename()-获取某个数据库表名
格式:
    string mysql_tablename(resource result_set, integer index)
例:
    mysql_connect("localhost", "username", "password");
    $tables = mysql_list_tables("MyDatabase");
    $count = -1;
    while (++$count < mysql_numrows($tables)) {
        echo mysql_tablename($tables, $count)."<br />";
    }
说明:该函数获取mysql_list_tables()所返回result_set中位于指定index索引的表名

18、mysql_fetch_field()-获取字段信息
格式:
    object mysql_fetch_field(resource result [, int field_offset])
例:
    mysql_connect("localhost", "username", "password");
    mysql_select_db("MyDatabase");
    $query = "select * from MyTable";
    $result = mysql_query($query);
    $counts = mysql_num_fields($result);
    for($count = 0; $count < $counts; $count++) {
       $field = mysql_fetch_field($result, $count);
       echo "<p>$field->name $field->type ($field->max_length) </p>";
    } 
说明:
返回的对象共有12个对象属性:
name: 字段名
table: 字段所在的表
max_length:字段的最大长度
not_null: 如果字段不能为null,则为1,否则0
primary_key: 如果字段为主键,则为1,否则0
unique_key: 如果字段是唯一键,则为1, 否则0
multiple_key: 如果字段为非唯一,则为1,否则0
numeric: 如果字段为数值则为1,否则0
blob: 如果字段为BLOB则为1,否则为0
type: 字段的数据类型
unsigned: 如果字段为无符号数则为1,否则为0
zerofill: 如果字段为“零填充”则为1, 否则为0

19、mysql_num_fields()-获取查询的字段个数
格式:
    integer mysql_num_fields(resource result_set)
例:
    $query = "select id,name from MyTable order by name";
    $result = mysql_query($query);
    echo "这个查询的字段数是:".mysql_num_fields($result)."<br />";

20、mysql_list_fields()-获取指定表的所有字段的字段名
格式:
    resource mysql_list_fields (string database_name, string table_name [, resource link_id])
例:
    $fields =mysql_list_fields("MyDatabase", "MyTable");
    echo "数据库MyDatabase中表MyTable的字段数: ".mysql_num_fields($fields)."<br />";

21、mysql_field_flags()-获取指定的字段选项
格式:
    string mysql_field_flags (resource result_set, integer field_offset)
例:
    $query = "select id, name from MyTable order by name";
    $result = mysql_query($query);
    $row=mysql_fetch_wor($row);

22、mysql_field_len()-获取指定的字段的最大长度
格式:
    integer mysql_field_len (resource result_set, integer field_offset)
例:
    $query = "select name from MyTable";
    $result = mysql_query($query);
    $row = mysql_fetch_row($result);
    echo mysql_field_len($result, 0)."<br />"; 
说明:
如果mysql_field_len($reseult, 0) = 16777215
那么numer_format(mysql_field_len($result))等于16,777,215

23、mysql_field_name()-获取字段名
格式:
    string mysql_field_name (resource result_set, int field_offset)
例:
    $query = "select id as PKID, name from MyTable order by name";
    $result = mysql_query($query);
    $row = mysql_fetch_row($result);
    echo mysql_field_name($result, 0); // Result: PKID

24、mysql_field_type()-获取字段类型
格式:
    string mysql_field_type (resource result_set, int field_offset)
例:
    $query = "select id, name from MyTable order by name";
    $result = mysql_query($query);
    $row = mysql_fetch_row($result);
    echo mysql_field_type($result, 0); // Result: int

25、mysql_field_table()-获取字段所在表名
格式:
    string mysql_field_table (resource result_set, int field_offset)
例:
    $query = "select id as PKID, name from MyTable order by name";
    $result = mysql_query($query);
    $row = mysql_fetch_row($result);
    echo mysql_field_table($result, 0); // Result: MyTable

上一篇:Xcode7国际化(根据系统语言切换App显示的语言) - 元宵节快乐!


下一篇:Asp.Net MVC 从数据库生成代码(包括页面)