<?php getenv — 获取一个环境变量的值 $ip = getenv ( 'REMOTE_ADDR' ); // 或简单仅使用全局变量($_SERVER 或 $_ENV) $ip = $_SERVER [ 'REMOTE_ADDR' ]; getopt — 从命令行参数列表中获取选项 当使用命令行执行时:php script.php arg1 arg2 arg3 var_dump ( $argv ); //结果为 array(4) { [0]=> string(10) "script.php" [1]=> string(4) "arg1" [2]=> string(4) "arg2" [3]=> string(4) "arg3" } 当使用命令行执行时:php script.php arg1 arg2 arg3 var_dump ( $argc ); //结果为: int(4) $GLOBALS — 引用全局作用域中可用的全部变量 function test () { $foo = "local variable" ; echo '$GLOBALS找全局变量所以找到Example content: ' . $GLOBALS [ "foo" ] . "\n" ; echo '正常的找局部 local variable: ' . $foo . "\n" ; } $foo = "Example content" ; test (); 迭代(目的实例化一个对象后可以遍历那个对象) 写类时我们要继承Iterator的话就必须多些5个方法 1.current() 2.key() 3.next() 4.rewind() 5.valid 聚合式迭代器(目的实例化一个对象后可以遍历那个对象) 我们写类时要是继承 IteratorAggregate 就必须多写一个固定死的方法 getIterator(){ return new ArrayIterator($this); } 数组式访问 (目的实例化一个对象后可以遍历那个对象) 我们写类时要是继承ArrayAccess()接口 就必须多写4个方法 序列化接口 多写2个方法 class_implements — 返回指定的类实现的所有接口。 class_parents — 返回指定类的父类。 class_uses — 返回给定的类使用的特征 trait foo{ } class bar { use foo ;} print_r ( class_uses (new bar )); iterator_apply — 为迭代器中每个元素调用一个用户自定义函数 例如: function print_caps ( Iterator $iterator ) { echo strtoupper ( $iterator -> current ()) . "\n" ; return TRUE ; } $it = new ArrayIterator (array( "Apples" , "Bananas" , "Cherries" )); iterator_apply ( $it , "print_caps" , array( $it )); iterator_count — 计算迭代器中元素的个数 iterator_to_array — 将迭代器中的元素拷贝到数组 spl_autoload_call — 尝试调用所有已注册的__autoload()函数来装载请求类 spl_autoload_extensions — 注册并返回spl_autoload函数使用的默认文件扩展名。 spl_autoload_functions — 返回所有已注册的__autoload()函数。 spl_autoload_register — 注册__autoload()函数 spl_autoload_unregister — 注销已注册的__autoload()函数 spl_autoload — __autoload()函数的默认实现 spl_classes — 返回所有可用的SPL类 spl_object_hash — 返回指定对象的hash id -------------------------------------------------------------------------------- 套接字上下文选项 — 套接字上下文选项列表 // '7000' $opts = array( 'socket' => array( 'bindto' => '0:7000' , ), ); $context = stream_context_create ( $opts ); echo file_get_contents ( 'http://www.example.com' , false , $context ); HTTP context 的选项列表 $opts = array( 'http' => array( 'method' => 'POST' , 'header' => 'Content-type: application/x-www-form-urlencoded' , 'content' => $postdata ) ); $context = stream_context_create ( $opts ); $result = file_get_contents ( 'http://example.com/submit.php' , false , $context ); FTP 上下文选项列表 $stream_options = array('ftp' => array('overwrite' => true)); $stream_context = stream_context_create($stream_options); CURL 上下文选项列表 $opts = array( 'http' => array( 'method' => 'POST' , 'header' => 'Content-type: application/x-www-form-urlencoded' , 'content' => $postdata ) ); $context = stream_context_create ( $opts ); $result = file_get_contents ( 'http://example.com/submit.php' , false , $context ); 加载扩展 如果gd扩展已加载,返回 TRUE ,否则返回 FALSE 。 if (! extension_loaded ( 'gd' )) { if (! dl ( 'gd.so' )) { exit; } } // 引入一个扩展的例子,基于操作系统 if (! extension_loaded ( 'sqlite' )) { if ( strtoupper ( substr ( PHP_OS , 0 , 3 )) === 'WIN' ) { //判断操作系统 dl ( 'php_sqlite.dll' ); } else { dl ( 'sqlite.so' ); } } 获取当前 PHP 脚本所有者名称 echo 'Current script owner: ' . get_current_user (); — 返回所有常量的关联数组,键是常量名,值是常量值 define ( "MY_CONSTANT" , 1 ); print_r ( get_defined_constants ( true )); 输入模块名称 返回模块所以方法 print_r ( get_extension_funcs ( "xml" )); 查看php 引入了哪些文件 print_r(get_included_files()); 返回所有编译并加载的模块 print_r ( get_loaded_extensions ()); // 如果启用了魔术引号 echo $_POST [ 'lastname' ]; // O\'reilly //增加反斜线 echo addslashes ( $_POST [ 'lastname' ]); // O\\\'reilly get_magic_quotes_gpc() 用来检测php.ini中 magic_quotes_gpc 是否等于on 如果magic_quotes_gpc已经开启则 所有请求数据默认使用了addslashes() // 适用各个 PHP 版本的用法 if ( get_magic_quotes_gpc ()) {//为关闭时返回 0,否则返回 1 $lastname = stripslashes ( $_POST [ 'lastname' ]); //去掉反斜线 // 关闭功能 set_magic_quotes_runtime ( false ); }else { $lastname = $_POST [ 'lastname' ]; } // sQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 $lastname = mysql_real_escape_string ( $lastname ); echo $lastname ; // O\'reilly $sql = "INSERT INTO lastnames (lastname) VALUES (' $lastname ')" ; getmyuid — 获取 PHP 脚本所有者的 UID getmyinode — 获取当前脚本的索引节点(inode) getmypid — 获取 PHP 进程的 ID ini_get_all — 获取所有配置选项 ini_get — 获取一个配置选项的值 memory_get_peak_usage — 返回分配给 PHP 内存的峰值 memory_get_usage — 返回分配给 PHP 的内存量 php.ini文件的位置 echo php_ini_loaded_file (); 返回 web 服务器和 PHP 之间的接口类型 PHP 常量 PHP_SAPI 具有和 php_sapi_name() 相同的值。 打印 PHP 贡献者名单 phpcredits ( CREDITS_ALL - CREDITS_FULLPAGE ); phpversion — 获取当前的PHP版本 set_time_limit — 设置脚本最大执行时间 如果超时默认是30秒,在脚本运行了了25秒时调用 set_time_limit(20),那么,脚本在超时之前可运行总时间为45秒。 sys_get_temp_dir — 返回用于临时文件的目录 对比两个「PHP 规范化」的版本数字字符串 if ( version_compare( PHP_VERSION , '5.3.0' ) >= 0 ) { echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n" ; } zend_thread_id — 返回当前线程的唯一识别符 zend_version — 获取当前 Zend 引擎的版本 array_combine($array(一维数组的值做键), 另一个一维数组的值做值);新数组创建成功 array_column($array, '多维数组中的某元素值做值', '某元素值做键'); str_repeat ( "-=" , 10 ); //-=-=-=-=-=-=-=-=-=-= echo nl2br ( "foo isn't\n bar" );//foo isn't<br />bar echo lcfirst ('HelloWorld' ); // helloWorld // Outputs: A 'quote' is <b>bold</b> echo $a = htmlentities ( $str , ENT_QUOTES );//引号也被转换 echo html_entity_decode ( $a ); //还原被htmlentities()后的字符串 // 注意,这里的引号不会被转换 echo htmlspecialchars ( "<a href='test'>Test</a>" , ENT_QUOTES ); // <a href='test'>Test</a> echo htmlspecialchars_decode ( $str , ENT_NOQUOTES ); //还原被htmlspecialchars()后的字符串 // count_chars ( string $string [, int $mode = 0 ] ) echo $str =convert_uuencode ( 'string' );//1个参数(string) 目的对string进行编码 返回结果 echo convert_uudecode ( $str );//解码一个 uuencode 编码的字符串 $str = chunk_split('abcdefghi', 2, '=');//3个参数,目的用指定字符串将其分割为一定长度,返回分割后的字符。 stripslashes — 反引用一个引用字符串 addcslashes(string, 'A-z')//两个参数 目的转义 字符串 返回转以后的字符串 addslashes(string);//一个参数 目的转义4个特殊符号 ‘ “ \ null 返回转以后的字符串 string stripcslashes ( string $str ) 反引用一个使用 addcslashes() 转义的字符串 bin2hex(二进制) //一个参数 目的2进制转16进制 返回16进制 hex2bin — 转换十六进制字符串为二进制字符串 chop() rtrim() 的别名 //2个参数,目的去除右边空白或字符 返回去除后的结果 /**/ 查找字符串的首次出现 strstr ( '[email protected]' , '@' ); // 打印 @example.com //显示最后一次找到,要查找的字符串,以及后面的字符串。 strrchr( 'name@[email protected]' , '@' ); // 在字符串中查找一组字符的任何一个字符 // 输出 "is is a Simple text.",因为 'i' 先被匹配 echo strpbrk ('This is a Simple text.' , 'mi' ); // 输出 "Simple text.",因为字符区分大小写 echo strpbrk ('This is a Simple text.' , 'S' ); strtr — 转换指定字符 echo strtr ( "baab" , "ab" , "01" ), "\n" ; //结果 1001 echo strtr ( "baab" , array( "ab" => "01" ) ); //结果 ba01 //打断字符串为指定数量的字串 $newtext = wordwrap ( "The quick brown fox jumped over the lazy dog." , 20 , "<br />\n" ); //返回格式化字符串 print vsprintf ( "%04d-%02d-%02d" , explode ( '-' , '1988-8-1' )); // 1988-08-01 //替换字符串的子串 echo implode("<br>",substr_replace(array("1: AAA","2: AAA","3: AAA"),'BBB',3,3)); //结果: 1: BBB<br>2: BBB<br>3: BBB //从字符串的第 6 个位置开始替换(把 "world" 替换成 "Shanghai") substr_replace("Hello world","Shanghai",6); //在 "world" 开头插入 "Hello": echo substr_replace("world","Hello ",0,0); //关键字在一个字符串中出现的次数 substr_count ( 'This is a test' , 'is' ); //结果 2 strip_tags — 从字符串中去除 HTML 和 PHP 标记 //二进制安全字符串比较 strcmp ( string $str1 , string $str2 ) strcasecmp — 二进制安全比较字符串 不区分大小写 strncmp(string $str1 , string $str2, 长度) //二进制安全比较字符串开头的若干个字符 区分大小写 strncasecmp //不区分大小写 strcoll( string $str1 , string $str2 ) — 基于区域设置的字符串比较 不是二进制安全的。 $arr1 = $arr2 = array( "img12.png" , "img10.png" , "img2.png" , "img1.png" ); usort ( $arr1 , "strcmp" ); print_r ( $arr1 ); usort ( $arr2 , "strnatcmp" ); print_r ( $arr2 ); 输出在字符串 "Hello world!" 中找到字符 "w" 之前查找的字符数: echo strcspn("Hello world!", "w"); str_word_count — 返回字符串中单词的使用情况 str_split(string, 每一段的长度) //— 将字符串转换为数组 str_shuffle — 随机打乱一个字符串 echo str_pad ( $input , '10填充到指定长度' , "-=" , STR_PAD_LEFT ); // 输出 "-=-=-Alien" STR_PAD_BOTH往左 往右 STR_PAD_RIGHT 往右 $str = "first=value&arr[]=foo+bar&arr[]=baz" ; parse_str ( $str ); echo $first ; // value echo $arr [ 0 ]; // foo bar echo $arr [ 1 ]; // baz http_build_query($array); 1.flush — 刷新输出缓冲 2.ob_clean — 清空(擦掉)输出缓冲区 3.ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲 4.ob_end_flush — 冲刷出(送出)输出缓冲区内容并关闭缓冲 5.ob_flush — 冲刷出(送出)输出缓冲区中的内容 6.ob_get_clean — 得到当前缓冲区的内容并删除当前输出缓。 7.ob_get_contents — 返回输出缓冲区的内容 8.ob_get_flush — 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。 9.ob_get_length — 返回输出缓冲区内容的长度 10.ob_get_level — 返回输出缓冲机制的嵌套级别 11.ob_get_status — 得到所有输出缓冲区的状态 12.ob_gzhandler — 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer 13.ob_implicit_flush — 打开/关闭绝对刷送 14.ob_list_handlers — 列出所有使用中的输出处理程序。 15.ob_start — 打开输出控制缓冲 16.output_add_rewrite_var — 添加URL重写器的值(Add URL rewriter values) 17.output_reset_rewrite_vars — 重设URL重写器的值(Reset URL rewriter values) -------------------------------------------------------------------------------- // 连接、选择数据库 $link = mysql_connect ( 'mysql_host' , 'mysql_user' , 'mysql_password' ) or die( 'Could not connect: ' . mysql_error ()); echo 'Connected successfully' ; mysql_select_db ( 'my_database' ) or die( 'Could not select database' ); // 执行 SQL 查询 $query = 'SELECT * FROM my_table' ; $result = mysql_query ( $query ) or die( 'Query failed: ' . mysql_error ()); // 以 HTML 打印查询结果 echo "<table>\n" ; while ( $line = mysql_fetch_array ( $result , MYSQL_ASSOC )) { echo "\t<tr>\n" ; foreach ( $line as $col_value ) { echo "\t\t<td> $col_value </td>\n" ; } echo "\t</tr>\n" ; } echo "</table>\n" ; // 释放结果集 mysql_free_result ( $result ); // 关闭连接 mysql_close ( $link ); 日期 Monday 星期一 Tuesday Wednesday Thursday Friday Saturday Sunday 星期日 公共的 t 给定月份所应有的天数 28 到 31 c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00 r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200 U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time() 代表年的有 Y 4 位数字完整表示的年份 y 2 位数字表示的年份 L 是否为闰年 如果是闰年为 1,否则为 0 代表月的有 m 数字表示的月份,有前导零 n 数字表示的月份,没有前导零 F 月份,完整的文本格式,例如 January 或者 March M 三个字母缩写表示的月份 Jan 到 Dec 代表日的有: d 月份中的第几天,有前导零的 2 位 j 月份中的第几天,没有前导零 z 年份中的第几天 0 到 365 代表时的有 a 小写的上午和下午值 am 或 pm A 大写的上午和下午值 AM 或 PM B Swatch Internet 标准时 000 到 999 g 小时,12 小时格式,没有前导零 1 到 12 G 小时,24 小时格式,没有前导零 0 到 23 h 小时,12 小时格式,有前导零 01 到 12 H 小时,24 小时格式,有前导零 00 到 23 代表分的有 i 有前导零的分钟数 00 到 59> 代表秒的有 s 秒数,有前导零 00 到 59> 代表星期的有 D .3 个字母(Mon 到 Sun) l(“L”的小写字母) (Sunday 到 Saturday ) N 1(表示星期一)到 7(表示星期天) w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六) W 例如:42(当年的第 42 周) echo getcwd () . "\n" ;//当前目录名 chdir ( '/var/www/' ); //改变目录 chroot — 改变根目录 dir ( "/etc/php5" ); — 返回一个 Directory 类实例 $dir = "/etc/php5"; if ( is_dir ( $dir )) { if ( $dh = opendir ( $dir )) { while (( $file = readdir ( $dh )) !== false ) { echo "filename: $file : filetype: " . filetype ( $dir . $file ) . "\n" ; } closedir ( $dh ); } } rewinddir — 倒回目录句柄 scandir — 列出指定路径中的文件和目录 返回数组元素为目录名 realpath ( './../../etc/passwd' ); — 返回规范化的绝对路径名 clearstatcache ();//清除文件状态缓存 // $df 包含根目录下可用的字节数 $df = disk_free_space ( "/" ); disk_total_space( "/" ); — 返回一个目录的磁盘总大小 feof — 测试文件指针是否到了文件结束的位置 fclose — 关闭一个已打开的文件指针 fflush — 将缓冲内容输出到文件 fgetc — 从文件指针中读取字符 fgetcsv — 从文件指针中读入一行并解析 CSV 字段 fgets — 从文件指针中读取一行 fgetss — 从文件指针中读取一行并过滤掉 HTML 标记