php 经常使用

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

一、$_SERVERhtml

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

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

        $_SERVER[ 'REMOTE_ADDR‘ ] ; 客户IP地址 ;正则表达式

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

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

 

二、$_GET数据库

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

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

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

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

 

三、$_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变量的惟一途径。

 

四、$_COOKIE

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

       

五、$_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  上传表单中没有指定文件

 

六、$_ENV

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

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

            △  $_ENV[ 'SHELL' ]  系统 shell

 

七、$_REQUEST

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

 

八、$_SESSION

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

 

九、$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]):同上,该函数对大小写不敏感

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

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

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

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

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

三、替换字符串的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替换的长度,该项可选

四、字符长度

int strlen($str)

五、比较字符函数

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

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

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

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

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

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

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

expload(search,$str[,int])

七、去除空格:

ltrim()、rtrim()、trim()

八、加空格函数

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

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

十、HTML代码有关函数

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

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

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

可选参数所写的代码。

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

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

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

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

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

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

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

十二、数据库相关的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 比较两个字符串

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

* 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 正则表达式函数的替代函数

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

* 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])

 

2、数组操做的基本函数
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语句

 

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


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


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


联合查询:
1、多表联合查询:
$sql=mysql_query("
     select * from `tablename` where `nicheng` like "%敬%"
     union 
     select * from `info` where `nicheng` like "张%"",$conn);
2、联合查询结果排序:
$sql=mysql_query("select * from `tb_1` union all select * from `tb_2` order by `age` desc",$conn);
3、条件联合查询:
$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


多表查询

1、简约嵌套查询:
       $sql=mysql_query("select * from `tb_student_score_info` where `sid` in (select `sid` from `tb_student_info` where `sid`=$sno)",$conn);
2、复杂嵌套查询:
$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);
3、嵌套查询应用:
$sql=mysql_query("select * from `tb_laborage` where `jbgz` ".$_POST[tj]." any(select `jbgz` from `tb_laborage` where name='".$_POST[name]."')",$conn);
4、IN子查询:
     一、限定范围查询:
      $sql=mysql_query("select * from `tb_student_score` where `sid` in (select `sid` from `tb_student_score` where `sid` between $from and $to) ",$conn);
      二、查询记录信息:
$sql=mysql_query("select * from `tb_bookinfo` where `bookname` in (select `bookname` from `tb_bookinfo` where `bookname` like '%$bookname%') ",$conn);


排序分组
1、对数据进行降序查询:
      $sql=mysql_query("select * from `tb_sp` order by `sl` desc",$conn);
2、对数据进行多条件排序查询:
      $sql=mysql_query("select * from `tb_goods` order by `sl` desc,dj asc",$conn); 
3、对统计结果进行排序:
$sql=mysql_query("select *,sum(num) as totalnum from `tb_bookinfo` group by `bookname` order by `totalnum` desc",$conn); 
4、单列数据分组统计:
  $sql=mysql_query("select *,sum(num) as totalnum from `tb_bookinfo` group by `bookname` order by `totalnum` desc",$conn); 
5、多列数据分组统计:
  $sql=mysql_query("select *,sum(xcsl) as xc,sum(x ssl) as xs from `tb_book1` group by `bookname` ",$conn); 
6、多表分组统计:
  $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);


汇集函数
1、汇总统计查询:
       $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);  
2、均值统计查询:
$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);  
3、最小值统计查询:
$sql=mysql_query("select * from `tb_gemsell` where `outprice-inprice` in (select min(`outprice-inprice`) as minsell from `tb_gemsell`) ",$conn);  
4、最大值统计查询:
       $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);  
5、统计大于某值记录:
       $sql=mysql_query("select count(*) as total from `tb_sale` where `sale`>$num",$conn);


 

五 PHP数据库函数


 

一、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");
说明:使用该链接必须显示的关闭链接

二、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");
说明:使用该链接函数不须要显示的关闭链接,它至关于使用了链接池

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

四、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("不能选择这个数据库,或数据库不存在");

五、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

六、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();
说明:为了使代码清晰,不推荐使用这个函数调用

七、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;
    }
说明:最简单、也是效率最低的数据获取函数

八、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()函数使用

九、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的默认值。

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

十一、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()相同

十二、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查询所获取的记录数时才有用。

1三、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更新语句影响的行数

1四、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 />";
    }
说明:显示全部数据库名称

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

1六、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中全部表的表名

1七、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索引的表名

1八、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

1九、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 />";

2一、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);

2二、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

2三、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

2四、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

2五、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

相关文章
相关标签/搜索