php一些特殊函数的使用实例详解

<?php
/*
 * PHP Array 函数大全
 * 
 * 
array()    创建数组。    3
array_change_key_case()    返回其键均为大写或小写的数组。    4
array_chunk()    把一个数组分割为新的数组块。    4
array_combine()    通过合并两个数组来创建一个新数组。    5
array_count_values()    用于统计数组中所有值出现的次数。    4
array_diff()    返回两个数组的差集数组。    4
array_diff_assoc()    比较键名和键值,并返回两个数组的差集数组。    4
array_diff_key()    比较键名,并返回两个数组的差集数组。    5
array_diff_uassoc()    通过用户提供的回调函数做索引检查来计算数组的差集。    5
array_diff_ukey()    用回调函数对键名比较计算数组的差集。    5
array_fill()    用给定的值填充数组。    4
array_filter()    用回调函数过滤数组中的元素。    4
array_flip()    交换数组中的键和值。    4
array_intersect()    计算数组的交集。    4
array_intersect_assoc()    比较键名和键值,并返回两个数组的交集数组。    4
array_intersect_key()    使用键名比较计算数组的交集。    5
array_intersect_uassoc()    带索引检查计算数组的交集,用回调函数比较索引。    5
array_intersect_ukey()    用回调函数比较键名来计算数组的交集。    5
array_key_exists()    检查给定的键名或索引是否存在于数组中。    4
array_keys()    返回数组中所有的键名。    4
array_map()    将回调函数作用到给定数组的单元上。    4
array_merge()    把一个或多个数组合并为一个数组。    4
array_merge_recursive()    递归地合并一个或多个数组。    4
array_multisort()    对多个数组或多维数组进行排序。    4
array_pad()    用值将数组填补到指定长度。    4
array_pop()    将数组最后一个单元弹出(出栈)。    4
array_product()    计算数组中所有值的乘积。    5
array_push()    将一个或多个单元(元素)压入数组的末尾(入栈)。    4
array_rand()    从数组中随机选出一个或多个元素,并返回。    4
array_reduce()    用回调函数迭代地将数组简化为单一的值。    4
array_reverse()    将原数组中的元素顺序翻转,创建新的数组并返回。    4
array_search()    在数组中搜索给定的值,如果成功则返回相应的键名。    4
array_shift()    删除数组中的第一个元素,并返回被删除元素的值。    4
array_slice()    在数组中根据条件取出一段值,并返回。    4
array_splice()    把数组中的一部分去掉并用其它值取代。    4
array_sum()    计算数组中所有值的和。    4
array_udiff()    用回调函数比较数据来计算数组的差集。    5
array_udiff_assoc()    带索引检查计算数组的差集,用回调函数比较数据。    5
array_udiff_uassoc()    带索引检查计算数组的差集,用回调函数比较数据和索引。    5
array_uintersect()    计算数组的交集,用回调函数比较数据。    5
array_uintersect_assoc()    带索引检查计算数组的交集,用回调函数比较数据。    5
array_uintersect_uassoc()    带索引检查计算数组的交集,用回调函数比较数据和索引。    5
array_unique()    删除数组中重复的值。    4
array_unshift()    在数组开头插入一个或多个元素。    4
array_values()    返回数组中所有的值。    4
array_walk()    对数组中的每个成员应用用户函数。    3
array_walk_recursive()    对数组中的每个成员递归地应用用户函数。    5
arsort()    对数组进行逆向排序并保持索引关系。    3
asort()    对数组进行排序并保持索引关系。    3
compact()    建立一个数组,包括变量名和它们的值。    4
count()    计算数组中的元素数目或对象中的属性个数。    3
current()    返回数组中的当前元素。    3
each()    返回数组中当前的键/值对并将数组指针向前移动一步。    3
end()    将数组的内部指针指向最后一个元素。    3
extract()    从数组中将变量导入到当前的符号表。    3
in_array()    检查数组中是否存在指定的值。    4
key()    从关联数组中取得键名。    3
krsort()    对数组按照键名逆向排序。    3
ksort()    对数组按照键名排序。    3
list()    把数组中的值赋给一些变量。    3
natcasesort()    用“自然排序”算法对数组进行不区分大小写字母的排序。    4
natsort()    用“自然排序”算法对数组排序。    4
next()    将数组中的内部指针向前移动一位。    3
pos()    current() 的别名。    3
prev()    将数组的内部指针倒回一位。    3
range()    建立一个包含指定范围的元素的数组。    3
reset()    将数组的内部指针指向第一个元素。    3
rsort()    对数组逆向排序。    3
shuffle()    把数组中的元素按随机顺序重新排列。    3
sizeof()    count() 的别名。    3
sort()    对数组排序。    3
uasort()    使用用户自定义的比较函数对数组中的值进行排序并保持索引关联。    3
uksort()    使用用户自定义的比较函数对数组中的键名进行排序。    3
usort()    使用用户自定义的比较函数对数组中的值进行排序。    3
 */




//$arr = array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//var_dump(array_change_key_case($arr,CASE_UPPER)); //改变数字数组键的大小写,不是数组的值的大小写
//echo "<br>";
//var_dump(array_change_key_case($arr,CASE_LOWER));

//print_r(array_chunk($arr,1,true));//以分组形式重新组合数据,1表示以1个键值对为一个新数组,2就是2个为一个新数组,ture是保留原有键名,默认false

//$a1=array("a","b","c","d");
//$a2=array("Cat","Dog","Horse","Cow");
//print_r(array_combine($a1,$a2)); //a1必需,规定键名,a2必需,规定值  两个参数必须有相同数目的元素

//$a=array("Cat","Dog","Horse","Dog");
//print_r(array_count_values($a)); //函数用于统计数组中所有值出现的次数

//$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
//$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
//print_r(array_diff($a1,$a2)); //可以多个数组同事进行比较 都是和第一个数据经行比较

//$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
//$a2=array(0=>"Rat",1=>"Horse",2=>"Dog");
//$a3=array(0=>"Horse",1=>"Dog",2=>"Cat");
//print_r(array_diff_assoc($a1,$a2,$a3)); //都是和第一个数据经行比较 返回两个数组的差集数组,比较的是键值和键名



//$a=array_fill(2,3,"Dog");
//print_r($a);//array_fill(start(规定键的起始索引),number(规定填充的数量,其值必须大于 0),value(规定要插入的值)) 

//
//function myfunction($v) 
//{
//if ($v==="Horse")
//    {
//    return true;
//    }
//return false;
//}
//$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
//print_r(array_filter($a,"myfunction")); //可以使用回调函数,过滤数据


//$array = array("a"=>"abc","b"=>"bcd","c"=>"cde","d"=>"def","e"=>"");
// $s=    array_filter($array);
//    print_r($s);



//$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
//print_r(array_flip($a));//将键值和键名反转,返回数组

//$a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
//$a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
//print_r(array_intersect($a1,$a2)); //和array_diff_assoc()array_diff() 相反,返回两个或多个数组的交集数组 ,比较是键值 array_intersect_assoc()键值和键名
//array_intersect_key()比较键名

//$a=array("a"=>"Dog","b"=>"Cat"); 
//if (array_key_exists("a",$a)) //判断为a的键名是否存在,无键值的是用默认键名,比如 0 . 1等
//    {
//    echo "Key exists!";
//    }
//else
//    {
//    echo "Key does not exist!";
//    }



//$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
//print_r(array_keys($a));//返回包含数组中所有键名的一个新数组 可以打印所有,也有使用单独一个键值作为返回
//print_r(array_keys($a,"Dog"));


//function myfunction($v) 
//{
//if ($v==="Dog")
//    {
//    return "Fido";
//    }
//return $v;
//}
//$a=array("Horse","Dog","Cat");
//print_r(array_map("myfunction",$a)); //返回用户自定义函数作用后的数组 可以使用自定义函数替换一个或者多个键名的键值


//$a1=array("a"=>"Horse","b"=>"Dog");
//$a2=array("c"=>"Cow","b"=>"Cat");
//print_r(array_merge($a1,$a2)); //把两个或多个数组合并为一个数,如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)
//
//$a=array(3=>"Horse",4=>"Dog");
//print_r(array_merge($a));//键名重置




//$a1=array("a"=>"Horse","b"=>"Dog");
//$a2=array("c"=>"Cow","b"=>"Cat");
//print_r(array_merge_recursive($a1,$a2));//将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组

//$a1=array("Dog","Dog","Cat");
//$a2=array("Pluto","Fido","Missy");
//array_multisort($a1,SORT_ASC,$a2,SORT_DESC);//将数组,升序或者降序
//print_r($a1);
//print_r($a2);


//$a=array("Dog","Cat");
//print_r(array_pad($a,5,0));//向一个数组插入带有指定值的指定数量的元素  会根据你指定的长度经行自动补充
//
//$a=array("Dog","Cat");
//print_r(array_pad($a,-5,0));


//$a=array("Dog","Cat","Horse");
//array_pop($a);//删除数组中的最后一个元素
//print_r($a);

//$a=array(5,5);//计算并返回数组中所有值的乘积 
//echo(array_product($a));




//$a=array("a"=>"Dog","b"=>"Cat");
//array_push($a,"Horse","Bird"); //向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度, 向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度,
//
//print_r($a);


//$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//print_r(array_rand($a,2));//从数组中随机选出一个或多个元素,并返回


//function myfunction($v1,$v2) 
//{
//return $v1 . "-" . $v2;
//}
//$a=array("Dog","Cat","Horse");
//print_r(array_reduce($a,"myfunction",5));//用回调函数迭代地将数组简化为单一的值 ,第三个参数将作为数组中的第一个值来处理



//$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//print_r(array_reverse($a));//将原数组中的元素顺序翻转,创建新的数组并返回


//$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//echo array_search("Dog",$a);//与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回


//$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
//echo array_shift($a);//删除数组中的第一个元素,并返回被删除元素的值
//print_r ($a);


//$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
//print_r(array_slice($a,1,2));//在数组中根据条件取出一段值,并返回,如果数组有字符串键,所返回的数组将保留键名

//$a=array(0=>"5",1=>"15",2=>"25");
//echo array_sum($a);//返回数组中所有值的总和


//function myfunction($v1,$v2) 
//{
//if ($v1===$v2)
//  {
//  return 0;
//  }
//if ($v1 > $v2) return 1;
//  {
//  return -1;
//  }
//return 1;
//}
//$a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
//$a2=array(1=>"Cat",2=>"Dog",3=>"Fish");
//print_r(array_uintersect($a1,$a2,"myfunction")); //函数计算数组的交集,用回调函数比较数据,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值



//$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat");
//print_r(array_unique($a));//移除数组中的重复的值,并返回结果数组,当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除


//$firstname = "Peter";
//$lastname = "Griffin";
//$age = "38";
//
//$result = compact("firstname", "lastname", "age");//创建一个由参数所带变量组成的数组。如果参数中存在数组,该数组中变量的值也会被获取
////键名为函数的参数,键值为参数中变量的值
//print_r($result);


//$my_array = array("b" => "Dog", "a" => "Cat", "c" => "Horse");//对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序
//asort($my_array);
//print_r($my_array);



//$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");// 函数对数组进行逆向排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序
//arsort($my_array);
//print_r($my_array);

//$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse");
//print_r(array_values($a));//返回一个包含给定数组中所有键值的数组,但不保留键名


//$a=array("a"=>"Cat","b"=>"Dog");
//array_unshift($a,"Horse");//在数组开头插入一个或多个元素
//print_r($a)


//$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
//sort($my_array);//按升序对给定数组的值排序
//print_r($my_array);


//$s = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
//$result = sizeof($s);//计算数组中的单元数目或对象中的属性个数
//echo $result;
//
//$people = array("Peter", "Joe", "Glenn", "Cleveland");
//$result = sizeof($people);//计算数组中的单元数目或对象中的属性个数
//echo $result;



//$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
//shuffle($my_array);//把数组中的元素按随机顺序重新排列,本函数为数组中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序
//print_r($my_array);

//$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
//rsort($my_array);//对数组的元素按照键值进行逆向排序。与 arsort() 的功能基本相同,该函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序
//print_r($my_array);

//$people = array("Peter", "Joe", "Glenn", "Cleveland");
//echo current($people) . "<br />";
//echo next($people) . "<br />";
//echo reset($people);//把数组的内部指针指向第一个元素,并返回这个元素的值

//$number = range(0,50,10);//10是步幅,创建并返回一个包含指定范围的元素的数组
//print_r ($number);


//$people = array("Peter", "Joe", "Glenn", "Cleveland");
//echo current($people) . "<br />";
//echo next($people) . "<br />"; 
//echo prev($people); //把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值


//$temp_files = array("temp15.txt","temp10.txt",
//"temp1.txt","temp22.txt","temp2.txt");
//
//sort($temp_files);
//echo "Standard sorting: ";
//print_r($temp_files);
//echo "<br />";
//
//natsort($temp_files);//用自然顺序算法对给定数组中的元素排序
//echo "Natural order: ";
//print_r($temp_files);


//$my_array = array("Dog","Cat","Horse");
//list($a, $b, $c) = $my_array;
//echo "I have several animals, a $a, a $b and a $c.";


//$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
//krsort($my_array);//将数组按照键逆向排序,为数组值保留原来的键
//print_r($my_array);

//$people = array("Peter", "Joe", "Glenn", "Cleveland");//返回数组内部指针当前指向元素的键名
//next($people);
//echo "The key from the current position is: " . key($people);




//$people = array("Peter", "Joe", "Glenn", "Cleveland");//数在数组中搜索给定的值
//if (in_array("Glenn",$people))
//  {
//  echo "Match found";
//  }
//else
//  {
//  echo "Match not found";
//  }


//$people = array("Peter", "Joe", "Glenn", "Cleveland");//将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)
//echo current($people) . "<br />";
//echo end($people); 


//$people = array("Peter", "Joe", "Glenn", "Cleveland");//生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动。
//print_r (each($people));




/*
 * 时间日期函数
 * 
 * 只写部分实用函数
 * 
 * 
cal_days_in_month()    针对指定的年份和日历,返回一个月中的天数。    4
cal_from_jd()    把儒略日计数转换为指定日历的日期。    4
cal_info()    返回有关给定日历的信息。    4
cal_to_jd()    把日期转换为儒略日计数。    4
easter_date()    返回指定年份的复活节午夜的 Unix 时间戳。    3
easter_days()    返回指定年份的复活节与 3 月 21 日之间的天数。    3
FrenchToJD()    将法国共和历法转换成为儒略日计数。    3
GregorianToJD()    将格利高里历法转换成为儒略日计数。    3
JDDayOfWeek()    返回日期在周几。    3
JDMonthName()    返回月的名称。    3
JDToFrench()    把儒略日计数转换为法国共和国历法。    3
JDToGregorian()    把儒略日计数转换为格利高里历法。    3
jdtojewish()    把儒略日计数转换为犹太历法。    3
JDToJulian()    把儒略日计数转换为儒略历。    3
jdtounix()    把儒略日计数转换为 Unix 时间戳。    4
JewishToJD()    把犹太历法转换为儒略日计数。    3
JulianToJD()    把儒略历转换为儒略日计数。    3
unixtojd()    把 Unix 时间戳转换为儒略日计数。    4
 * 
 * 
 * 
 * 
checkdate()    验证格利高里日期。    3
date_default_timezone_get()    返回默认时区。    5
date_default_timezone_set()    设置默认时区。    5
date_sunrise()    返回给定的日期与地点的日出时间。    5
date_sunset()    返回给定的日期与地点的日落时间。    5
date()    格式化本地时间/日期。    3
getdate()    返回日期/时间信息。    3
gettimeofday()    返回当前时间信息。    3
gmdate()    格式化 GMT/UTC 日期/时间。    3
gmmktime()    取得 GMT 日期的 UNIX 时间戳。    3
gmstrftime()    根据本地区域设置格式化 GMT/UTC 时间/日期。    3
idate()    将本地时间/日期格式化为整数    5
localtime()    返回本地时间。    4
microtime()    返回当前时间的微秒数。    3
mktime()    返回一个日期的 Unix 时间戳。    3
strftime()    根据区域设置格式化本地时间/日期。    3
strptime()    解析由 strftime 生成的日期/时间。    5
strtotime()    将任何英文文本的日期或时间描述解析为 Unix 时间戳。    3
time()    返回当前时间的 Unix 时间戳。    3

 * 
 */


//$d=cal_days_in_month(CAL_GREGORIAN,2,2015);//对指定的年份和日历,返回一个月中的天数
//echo("There was $d days in October 2005");


//$jd=cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y"));//返回当前是星期几
//echo(jddayofweek($jd,1));


//$jd=cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y"));//返回当前是月份
//echo(jdmonthname($jd,1));

//echo(date_default_timezone_get());//返回脚本中所有日期时间函数所使用的默认时区


//print_r(getdate());//取得日期/时间信息,这个很好用返回的是当前所有的日期时间信息


//echo(idate("H"));//将本地时间/日期格式化为整数
/*
d    月份中的第几天
h    小时(12 小时格式)
H    小时(24 小时格式)
i    分钟
I    如果启用夏时制则返回 1,否则返回 0
L    如果是闰年则返回 1,否则返回 0
m    月份的数字
s    秒数
t    本月的总天数
U    自 Unix 纪元(January 1 1970 00:00:00 GMT)起的秒数――这和 time() 作用相同
w    星期中的第几天(星期天是 0)
W    ISO-8601 格式年份中的第几个星期,每星期从星期一开始
y    年份(1 或 2 位数字――见下面说明)
Y    年份(4 位数字)
z    年份中的第几天
Z    以秒为单位的时区偏移量
*/



//$localtime = localtime();
//$localtime_assoc = localtime(time(), true);
//print_r($localtime);
//print_r($localtime_assoc);



/*
 * 
 * Directory 函数
 * 
 * 
chdir()    改变当前的目录。    3
chroot()    改变当前进程的根目录。    4
dir()    打开一个目录句柄,并返回一个对象。    3
closedir()    关闭目录句柄。    3
getcwd()    返回当前目录。    4
opendir()    打开目录句柄。    3
readdir()    返回目录句柄中的条目。    3
rewinddir()    重置目录句柄。    3
scandir()    列出指定路径中的文件和目录。    5
 * 
 */


////获得当前目录
//echo getcwd();
//echo "<br />";
//
////改变为 images 目录
//chdir("images");//把当前的目录改变为指定的目录
//echo "<br />";
//echo getcwd();


//打开 images 目录
//$dir = dir("upload");//打开一个目录句柄,并返回一个对象。这个对象包含三个方法:read() , rewind() 以及 close()
////列出 images 目录中的文件
//while (($file = $dir->read()) !== false)
//{
//echo "filename: " . $file . "<br />";
//}
//$dir->close();




//$dir = opendir("upload"); //和dir函数意思差不多
//while (($file = readdir($dir)) !== false)
//  {
//  echo "filename: " . $file . "<br />";
//  }
//  closedir($dir);

//print_r(scandir("upload"));//返回一个数组,其中包含指定路径中的文件和目录


//$dir = opendir("upload");
////列出 images 目录中的文件
//while (($file = readdir($dir)) !== false)
//  {
//  echo "filename: " . $file . "<br />";
//  }
//rewinddir($dir);//重置由 opendir() 打开的目录句柄
//closedir($dir);




/*
 * PHP 杂项函数
 * 
connection_aborted()    检查是否断开客户机。    3
connection_status()    返回当前的连接状态。    3
constant()    返回一个常量的值。    4
define()    定义一个常量。    3
defined()    检查某常量是否存在。    3
die()    输出一条消息,并退出当前脚本。    3
eval()    把字符串按照 PHP 代码来计算。    3
exit()    输出一条消息,并退出当前脚本。    3
get_browser()    返回用户浏览器的性能。    3
highlight_file()    对文件进行语法高亮显示。    4
highlight_string()    对字符串进行语法高亮显示。    4
ignore_user_abort()    设置与客户机断开是否会终止脚本的执行。    3
pack()    把数据装入一个二进制字符串。    3
php_strip_whitespace()    返回已删除 PHP 注释以及空白字符的源代码文件。    5
show_source()    highlight_file() 的别名。    4
sleep()    延迟代码执行若干秒。    3
time_nanosleep()    延迟代码执行若干秒和纳秒。    5
time_sleep_until()    延迟代码执行指定的时间。    5
uniqid()    生成唯一的 ID。    3
unpack()    从二进制字符串对数据进行解包。    3
usleep()    延迟代码执行若干微秒。    3
 * 
 */

//error_reporting(E_ALL & ~E_NOTICE); //设置错误报告级别

//exit("出现错误");
//die("出现错误");

//define ( "ZX" ,  "Hello world." );
//echo  ZX ;  
//echo "<br>";
//echo defined("ZX"); //查看ZX定义的常量是不是存在
//echo constant("ZX");//打印ZX

//echo connection_aborted();//检查是否断开客户机

//echo connection_status();//返回当前的连接状态
//0 - CONNECTION_NORMAL - 连接运行正常
//1 - CONNECTION_ABORTED - 连接由用户或网络错误终止
//2 - CONNECTION_TIMEOUT - 连接超时
//3 - CONNECTION_ABORTED & CONNECTION_TIMEOUT


//namespace  MyProject ;
//echo  __NAMESPACE__; //__NAMESPACE__访问当前命名空间名称



//eval使用
 //$zx = "zx";
//echo($zx);//比较不常用必须是string
//eval("echo $zx;");//执行语句里面的php语法,必须是php的正常语法



//php定界符 <<< 解析变量{$name} 注意 定界符字符后面一定不要有空格不然会报错

//$str = <<<EOT
//Example of string 
//spanning multiple lines 
//using heredoc syntax. 
//EOT;
//
//echo $str;


//$name ="zx";
//$s =<<<Eof
//hello{$name} 
//Eof;
//echo $s;

//范围解析操作符(::)可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法

//class  MyClass  {
//    const  CONST_VALUE  =  'zx' ;
//}
//
//$classname  =  'MyClass' ;
//echo  $classname :: CONST_VALUE ;  // 自 PHP 5.3.0 起
//echo "<br>";
//echo  MyClass :: CONST_VALUE ;
//echo "<br>";
//
//
//class  OtherClass  extends  MyClass
//{
//    public static  $my_static  =  'static var' ;
//
//    public static function  doubleColon () {
//        echo  parent :: CONST_VALUE  .  "
" ;
//        echo  self :: $my_static  .  "
" ;
//    }
//}
//
//$classname  =  'OtherClass' ;
//echo  $classname :: doubleColon ();  // 自 PHP 5.3.0 起
//echo "<br>";
//
//OtherClass :: doubleColon ();
//
//
//
//class  zClass
//{
//    protected function  myFunc () {
//        echo "<br>";
//        echo  "MyClass::myFunc()
" ;
//           echo "<br>";
//    }
//}
//
//class  zxClass  extends  zClass
//{
//     // 覆盖了父类的定义
//     public function  myFunc ()
//    {
//         // 但还是可以调用父类中被覆盖的方法
//         parent :: myFunc ();
//      
//        echo  "OtherClass::myFunc()
" ;
//        echo "<br>";
//    }
//}
//
//$class  = new  zxClass ();
//$class -> myFunc ();



//echo $_SERVER['HTTP_USER_AGENT'] . "<br /><br />";

//你的首先在php.ini里面配置browscap.ini ;browscap = extra/browscap.ini 注意这个是你自己browscap.ini的url
//$browser = get_browser(null,true);
//print_r($browser);
//echo "<br>";

//$s =getallheaders();
//print_r($s);
//echo "<br>";

//$ss =get_headers("https://www.baidu.com/");
//print_r($ss);

//HttpResponse;
//echo http_response_code();//返回htpp状态码,正常是200
//echo HttpResponse::getBufferSize() ;
//$w = php_strip_whitespace("test.php");
//php_uname();
//PHP_URL_FRAGMENT;
//var_dump($w);

//echo pack("C*",80,72,80);//把数据装入一个二进制字符串 输出是PHP
//$data = "PHP";
//print_r(unpack("C*",$data));

//echo date('h:i:s') . "<br />";
////暂停 10 秒 单位秒
//sleep(10);//usleep()更精细
////重新开始
//echo date('h:i:s');



//echo uniqid();//基于以微秒计的当前时间,生成一个唯一的 ID




/*
 * PHP Filesystem 函数
 * 
 * 
 * 如果启用安全模式以下函数大多数都会受到影响
 * 
 * PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)
 * 
 * 
 * 
basename()    返回路径中的文件名部分。    3
chgrp()    改变文件组。    3
chmod()    改变文件模式。    3
chown()    改变文件所有者。    3
clearstatcache()    清除文件状态缓存。    3
copy()    复制文件。    3
delete()    参见 unlink() 或 unset()。     
dirname()    返回路径中的目录名称部分。    3
disk_free_space()    返回目录的可用空间。    4
disk_total_space()    返回一个目录的磁盘总容量。    4
diskfreespace()    disk_free_space() 的别名。    3
fclose()    关闭打开的文件。    3
feof()    测试文件指针是否到了文件结束的位置。    3
fflush()    向打开的文件输出缓冲内容。    4
fgetc()    从打开的文件中返回字符。    3
fgetcsv()    从打开的文件中解析一行,校验 CSV 字段。    3
fgets()    从打开的文件中返回一行。    3
fgetss()    从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。    3
file()    把文件读入一个数组中。    3
file_exists()    检查文件或目录是否存在。    3
file_get_contents()    将文件读入字符串。    4
file_put_contents()    将字符串写入文件。    5
fileatime()    返回文件的上次访问时间。    3
filectime()    返回文件的上次改变时间。    3
filegroup()    返回文件的组 ID。    3
fileinode()    返回文件的 inode 编号。    3
filemtime()    返回文件的上次修改时间。    3
fileowner()    文件的 user ID (所有者)。    3
fileperms()    返回文件的权限。    3
filesize()    返回文件大小。    3
filetype()    返回文件类型。    3
flock()    锁定或释放文件。    3
fnmatch()    根据指定的模式来匹配文件名或字符串。    4
fopen()    打开一个文件或 URL。    3
fpassthru()    从打开的文件中读数据,直到 EOF,并向输出缓冲写结果。    3
fputcsv()    将行格式化为 CSV 并写入一个打开的文件中。    5
fputs()    fwrite() 的别名。    3
fread()    读取打开的文件。    3
fscanf()    根据指定的格式对输入进行解析。    4
fseek()    在打开的文件中定位。    3
fstat()    返回关于一个打开的文件的信息。    4
ftell()    返回文件指针的读/写位置    3
ftruncate()    将文件截断到指定的长度。    4
fwrite()    写入文件。    3
glob()    返回一个包含匹配指定模式的文件名/目录的数组。    4
is_dir()    判断指定的文件名是否是一个目录。    3
is_executable()    判断文件是否可执行。    3
is_file()    判断指定文件是否为常规的文件。    3
is_link()    判断指定的文件是否是连接。    3
is_readable()    判断文件是否可读。    3
is_uploaded_file()    判断文件是否是通过 HTTP POST 上传的。    3
is_writable()    判断文件是否可写。    4
is_writeable()    is_writable() 的别名。    3
link()    创建一个硬连接。    3
linkinfo()    返回有关一个硬连接的信息。    3
lstat()    返回关于文件或符号连接的信息。    3
mkdir()    创建目录。    3
move_uploaded_file()    将上传的文件移动到新位置。    4
parse_ini_file()    解析一个配置文件。    4
pathinfo()    返回关于文件路径的信息。    4
pclose()    关闭有 popen() 打开的进程。    3
popen()    打开一个进程。    3
readfile()    读取一个文件,并输出到输出缓冲。    3
readlink()    返回符号连接的目标。    3
realpath()    返回绝对路径名。    4
rename()    重名名文件或目录。    3
rewind()    倒回文件指针的位置。    3
rmdir()    删除空的目录。    3
set_file_buffer()    设置已打开文件的缓冲大小。    3
stat()    返回关于文件的信息。    3
symlink()    创建符号连接。    3
tempnam()    创建唯一的临时文件。    3
tmpfile()    建立临时文件。    3
touch()    设置文件的访问和修改时间。    3
umask()    改变文件的文件权限。    3
unlink()    删除文件。    3

 * 
 * 
 * 
 * 
 * 
 * 
 */

header("Content-type:text/html;charset=utf-8");

//$path = "/testweb/home.php";
////显示带有文件扩展名的文件名
//echo basename($path);//返回路径中的文件名部分
////显示不带有文件扩展名的文件名
//echo "<br>";
//echo basename($path,".php");//规定文件扩展名。如果文件有 suffix,则不会输出这个扩展名


//$e = chgrp("1.txt","zx");//改变文件所属的组 建议不要使用



//// 所有者可读写,其他人没有任何权限
//chmod("test.txt",0600);//改变文件模式
//// 所有者可读写,其他人可读
//chmod("test.txt",0644);
//// 所有者有所有权限,其他所有人可读和执行
//chmod("test.txt",0755);
//// 所有者有所有权限,所有者所在的组可读
//chmod("test.txt",0740);
//chown("test.txt","charles");//改变指定文件的所有者





////检查文件大小
//echo filesize("1.txt");
//$file = fopen("1.txt", "a+");
//// 截取文件
//ftruncate($file,100);//把文件截断到指定的长度
//echo "<br>";
//fclose($file);
////清除缓存并再次检查文件大小
//clearstatcache();//清除文件状态缓存
////会缓存某些函数的返回信息,以便提供更高的性能。但是有时候,比如在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存,以便获得正确的结果。要做到这一点,就需要使用 
//echo filesize("1.txt");


//echo copy("1.txt","2.txt");//拷贝文件


//echo dirname("c:/testweb/home.php");//返回路径中的目录部分
//echo dirname("/testweb/home.php");


//$e = disk_free_space("D:");//windows只能看到一个磁盘的带下,linux可以查看文件夹
//$f = $e/(1024*1024*1024);
//echo $f.".GB";

//$e = disk_total_space("D:");//返回指定目录的磁盘总大小
//$f = $e/(1024*1024*1024);
//echo $f.".GB";


//$file = fopen("1.txt", "r");//是否已到达文件末尾
////输出文本中所有的行,直到文件结束为止。
//while(! feof($file))
//  {
//  echo fgets($file). "<br />";//返回文件一行
//  }
//fclose($file);


//$file = fopen("1.txt","r+");
//fflush($file);//将缓冲内容输出到文件


//$file = fopen("1.txt","r");
//echo fgetc($file);//返回文件一个字符
//fclose($file);
//
//
//$file = fopen("1.txt","r");
//while (! feof ($file))
//  {
//  echo fgetc($file);
//  }
//fclose($file);



//$file = fopen("contacts.csv","r");
//while(! feof($file))
//  {
//  print_r(fgetcsv($file));//从文件指针中读入一行并解析 CSV 字段,返回一个包含这些字段的数组
//  }
//fclose($file);


//$file = fopen("test.htm","r");
//echo fgetss($file,1024,"<p>,<b>");//指定p标签,b标签过滤,读取前1024个字节,从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记
//fclose($file);


//print_r(file("1.txt"));//把整个文件读入一个数组中


//echo file_exists("1.txt");//检查文件或目录是否存在.不能检查相对路径特别是框架


//echo file_get_contents("1.txt");//把整个文件读入一个字符串中


//echo file_put_contents("test.txt","Hello World. Testing!");//没有文件会自己创建,把一个字符串写入文件中


//echo fileatime("test.txt");//返回指定文件的上次访问时间
//echo "Last access: ".date("F d Y H:i:s.",fileatime("test.txt"));


//echo filectime("test.txt");//返回指定文件的上次 inode 修改时间
//echo "Last change: ".date("F d Y H:i:s.",filectime("test.txt"));


//echo filegroup("test.txt");//返回指定文件的组 ID

//echo fileinode("test.txt");//返回文件的 inode 编号



//echo fileowner("1.txt");//返回文件的所有者ID 


//$e=  fileperms("test.txt");//返回文件或目录的权限
//var_dump($e);



//echo filesize("test.txt");//返回指定文件的大小


//echo filetype("test.txt");//指定文件或目录的类型
/*
文件或目录的类型
fifo
char
dir
block
link
file
unknown

*/






//$file = fopen("test.txt","w+");
////echo $file;
//if (flock($file,LOCK_EX))  //代码有问题
//  {
//  fwrite($file,"Write something");
//  // release lock
//  flock($file,LOCK_UN);
//  }
//else
//  {
//  echo "Error locking file!";
//  }
//fclose($file);
//                                                      代码有问题
//$fp  =  fopen ( "2.txt" ,  "r+" );
//
//if ( flock ( $fp ,  LOCK_EX )) {   // 进行排它型锁定
//     ftruncate ( $fp ,  0 );       // truncate file
//     fwrite ( $fp ,  "Write something here
" );
//     fflush ( $fp );             // flush output before releasing the lock
//     flock ( $fp ,  LOCK_UN );     // 释放锁定
//} else {
//    echo  "Couldn't get the lock!" ;
//}
//
//fclose ( $fp );


/*
要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。

*/




//$txt = "My car is darkgrey...";
//if ($t=fnmatch("*",$txt))
//  {
//  echo $t;
//  }



//$file = fopen("1.txt","rwb");
//$file1 = fopen("http://www.baidu.com/","rb"); // allow_url_fopen 是否开启
//
//var_dump($file1);
//echo '<br>';
//var_dump($file);


//$file = fopen("http://www.baidu.com","r");
//fpassthru($file);//输出文件指针处的所有剩余数据
//var_dump($file);//可以替换301



//$file = fopen("1.txt","rw");
//// 读取第一行
//fgets($file);
//// 把文件的其余部分发送到输出缓存
//echo fpassthru($file);//输出文件指针处的所有剩余数据
//fclose($file);



//$file = fopen("test.txt","w");
//echo fputs($file,"Hello World. Testing!");
//fclose($file);


////读取整个文件
//$file = fopen("test.txt","r");
//echo fread($file,filesize("test.txt"));//读取文件(可安全用于二进制文件)
//fclose($file);


//$file = fopen("test.txt","r");
//print_r(fstat($file));//返回关于打开文件的信息。
//fclose($file);

/*
 * 
0    dev    设备名
1    ino    号码
2    mode    inode 保护模式
3    nlink    被连接数目
4    uid    所有者的用户 id
5    gid    所有者的组 id
6    rdev    设备类型,如果是 inode 设备的话
7    size    文件大小的字节数
8    atime    上次访问时间(Unix 时间戳)
9    mtime    上次修改时间(Unix 时间戳)
10    ctime    上次改变时间(Unix 时间戳)
11    blksize    文件系统 IO 的块大小
12    blocks    所占据块的数目
 * 
 */


//$file = fopen("test.txt","r");
//// 输出当前位置
//echo ftell($file);//在打开文件中的当前位置
//// 改变当前位置
//fseek($file,"15");
//// 再次输出当前位置
//echo ftell($file);//在打开文件中的当前位置
//fclose($file);



//echo filesize("test.txt");
//echo "<br />";
//$file = fopen("test.txt", "a+");
//ftruncate($file,100);//把文件截断到指定的长度
//fclose($file);
////清空缓存,再次检查文件大小
//clearstatcache();
//echo filesize("test.txt");



//print_r(glob("*.*"));//返回匹配指定模式的文件名或目录
/*
 * 
GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误
 * 
 */



//$file = "setup.exe";
//if(is_executable($file))//检查指定的文件是否可执行。这个是很cms判断文件是否可以上传的函数
//  {
//  echo ("$file is executable");
//  }
//else
//  {
//  echo ("$file is not executable");
//  }



//$file = "test.txt";
//if(is_readable($file))//判断指定文件名是否可读
//  {
//  echo ("$file is readable");
//  }
//else
//  {
//  echo ("$file is not readable");
//  }




//$file = "test.txt";
//if(is_uploaded_file($file)) //是否通过http上传的
//  {
//  echo ("$file is uploaded via HTTP POST");
//  }
//else
//  {
//  echo ("$file is not uploaded via HTTP POST");
//  }
  
  

//  $file = "test.txt";
//if(is_writable($file))//是否可写
//  {
//  echo ("$file is writeable");
//  }
//else
//  {
//  echo ("$file is not writeable");
//  }



//$target  =  '1.txt' ; 
//$link  =  '2.txt' ; 
//$r = link ( $target ,  $link );//建立一个硬连接,此函数不能作用于远程文件,该功能在 Windows 平台下开始有效(Vista、 Server 2008 或更高版本)
//var_dump($r);



//echo  linkinfo ( '/vmlinuz' );  //是否确实存在,该功能在 Windows 平台下开始有效(Vista、 Server 2008 或更高版本)


//print_r(lstat("test.txt"));//返回关于文件或符号连接的信息



//mkdir("testing",0777);//创建目录


//$uploads_dir  =  '/uploads' ;
//foreach ( $_FILES [ "pictures" ][ "error" ] as  $key  =>  $error ) {
//    if ( $error  ==  UPLOAD_ERR_OK ) {
//         $tmp_name  =  $_FILES [ "pictures" ][ "tmp_name" ][ $key ];
//         $name  =  $_FILES [ "pictures" ][ "name" ][ $key ];
//         move_uploaded_file ( $tmp_name ,  " $uploads_dir / $name " );//上传文件
//    }
//}
//
////$_FILES作为接受传输过来的数据 


//test.ini
//[names]
//me = Robert
//you = Peter
//
//[urls]
//first = "http://www.example.com"
//second = "http://www.w3school.com.cn"

//print_r(parse_ini_file("test.ini",true));//解析一个配置文件,并以数组的形式返回其中的设置,ture则返回一个多维数组,包括了配置文件中每一节的名称和设置


//print_r(pathinfo("test.txt"));//以数组的形式返回文件路径的信息


//$file = popen("test.txt","r");//打开进程文件指针
//pclose($file);//关闭由 popen() 打开的管道


//$file = fopen("test.txt","r");
////改变文件指针的位置
//fseek($file,"15");
////把文件指针设定为 0
//rewind($file);//将文件指针的位置倒回文件的开头
//fclose($file);



//$path = "testing";
//if(!rmdir($path))//删除空的目录
//  {
//  echo ("Could not remove $path");
//  }



//echo touch("test.txt");//设置指定文件的访问和修改时间



//echo sys_get_temp_dir();//返回系统默认临时文件夹
//$temp_file  =  tempnam ( sys_get_temp_dir (),  'Tux' );//tempnam以读写(w+)模式建立一个具有唯一文件名的临时文件,返回一个文件句柄
//echo  $temp_file ;



//$temp = tmpfile();
//fwrite($temp, "Testing, testing.");
////倒回文件的开头
//rewind($temp);
////从文件中读取 1k
//echo fread($temp,1024);
////删除文件
//fclose($temp);




/*
 * PHP String 函数
 * 
 * 
 * 
addcslashes()    在指定的字符前添加反斜杠。    4
addslashes()    在指定的预定义字符前添加反斜杠。    3
bin2hex()    把 ASCII 字符的字符串转换为十六进制值。    3
chop()    rtrim() 的别名。    3
chr()    从指定的 ASCII 值返回字符。    3
chunk_split()    把字符串分割为一连串更小的部分。    3
convert_cyr_string()    把字符由一种 Cyrillic 字符转换成另一种。    3
convert_uudecode()    对 uuencode 编码的字符串进行解码。    5
convert_uuencode()    使用 uuencode 算法对字符串进行编码。    5
count_chars()    返回字符串所用字符的信息。    4
crc32()    计算一个字符串的 32-bit CRC。    4
crypt()    单向的字符串加密法 (hashing)。    3
echo()    输出字符串。    3
explode()    把字符串打散为数组。    3
fprintf()    把格式化的字符串写到指定的输出流。    5
get_html_translation_table()    返回翻译表。    4
hebrev()    把希伯来文本从右至左的流转换为左至右的流。    3
hebrevc()    同上,同时把(
) 转为    <br />。    3
html_entity_decode()    把 HTML 实体转换为字符。    4
htmlentities()    把字符转换为 HTML 实体。    3
htmlspecialchars_decode()    把一些预定义的 HTML 实体转换为字符。    5
htmlspecialchars()    把一些预定义的字符转换为 HTML 实体。    3
implode()    把数组元素组合为一个字符串。    3
join()    implode() 的别名。    3
levenshtein()    返回两个字符串之间的 Levenshtein 距离。    3
localeconv()    返回包含本地数字及货币信息格式的数组。    4
ltrim()    从字符串左侧删除空格或其他预定义字符。    3
md5()    计算字符串的 MD5 散列。    3
md5_file()    计算文件的 MD5 散列。    4
metaphone()    计算字符串的 metaphone 键。    4
money_format()    把字符串格式化为货币字符串。    4
nl_langinfo()    返回指定的本地信息。    4
nl2br()    在字符串中的每个新行之前插入 HTML 换行符。    3
number_format()    通过千位分组来格式化数字。    3
ord()    返回字符串第一个字符的 ASCII 值。    3
parse_str()    把查询字符串解析到变量中。    3
print()    输出一个或多个字符串。    3
printf()    输出格式化的字符串。    3
quoted_printable_decode()    解码 quoted-printable 字符串。    3
quotemeta()    在字符串中某些预定义的字符前添加反斜杠。    3
rtrim()    从字符串的末端开始删除空白字符或其他预定义字符。    3
setlocale()    设置地区信息(地域信息)。    3
sha1()    计算字符串的 SHA-1 散列。    4
sha1_file()    计算文件的 SHA-1 散列。    4
similar_text()    计算两个字符串的匹配字符的数目。    3
soundex()    计算字符串的 soundex 键。    3
sprintf()    把格式化的字符串写写入一个变量中。    3
sscanf()    根据指定的格式解析来自一个字符串的输入。    4
str_ireplace()    替换字符串中的一些字符。(对大小写不敏感)    5
str_pad()    把字符串填充为新的长度。    4
str_repeat()    把字符串重复指定的次数。    4
str_replace()    替换字符串中的一些字符。(对大小写敏感)    3
str_rot13()    对字符串执行 ROT13 编码。    4
str_shuffle()    随机地打乱字符串中的所有字符。    4
str_split()    把字符串分割到数组中。    5
str_word_count()    计算字符串中的单词数。    4
strcasecmp()    比较两个字符串。(对大小写不敏感)    3
strchr()    搜索字符串在另一字符串中的第一次出现。strstr() 的别名    3
strcmp()    比较两个字符串。(对大小写敏感)    3
strcoll()    比较两个字符串(根据本地设置)。    4
strcspn()    返回在找到任何指定的字符之前,在字符串查找的字符数。    3
strip_tags()    剥去 HTML、XML 以及 PHP 的标签。    3
stripcslashes()    删除由 addcslashes() 函数添加的反斜杠。    4
stripslashes()    删除由 addslashes() 函数添加的反斜杠。    3
stripos()    返回字符串在另一字符串中第一次出现的位置(大小写不敏感)    5
stristr()    查找字符串在另一字符串中第一次出现的位置(大小写不敏感)    3
strlen()    返回字符串的长度。    3
strnatcasecmp()    使用一种“自然”算法来比较两个字符串(对大小写不敏感)    4
strnatcmp()    使用一种“自然”算法来比较两个字符串(对大小写敏感)    4
strncasecmp()    前 n 个字符的字符串比较(对大小写不敏感)。    4
strncmp()    前 n 个字符的字符串比较(对大小写敏感)。    4
strpbrk()    在字符串中搜索指定字符中的任意一个。    5
strpos()    返回字符串在另一字符串中首次出现的位置(对大小写敏感)    3
strrchr()    查找字符串在另一个字符串中最后一次出现的位置。    3
strrev()    反转字符串。    3
strripos()    查找字符串在另一字符串中最后出现的位置(对大小写不敏感)    5
strrpos()    查找字符串在另一字符串中最后出现的位置(对大小写敏感)    3
strspn()    返回在字符串中包含的特定字符的数目。    3
strstr()    搜索字符串在另一字符串中的首次出现(对大小写敏感)    3
strtok()    把字符串分割为更小的字符串。    3
strtolower()    把字符串转换为小写。    3
strtoupper()    把字符串转换为大写。    3
strtr()    转换字符串中特定的字符。    3
substr()    返回字符串的一部分。    3
substr_compare()    从指定的开始长度比较两个字符串。    5
substr_count()    计算子串在字符串中出现的次数。    4
substr_replace()    把字符串的一部分替换为另一个字符串。    4
trim()    从字符串的两端删除空白字符和其他预定义字符。    3
ucfirst()    把字符串中的首字符转换为大写。    3
ucwords()    把字符串中每个单词的首字符转换为大写。    3
vfprintf()    把格式化的字符串写到指定的输出流。    5
vprintf()    输出格式化的字符串。    4
vsprintf()    把格式化字符串写入变量中。    4
wordwrap()    按照指定长度对字符串进行折行处理。    4
 * 
 * 
 * 
 */




//$str = "Hello, my name is John Adams.";
//echo $str;
//echo addcslashes($str,'A..Z');//在指定的字符前添加反斜杠
//echo addcslashes($str,'a..z');//向字符串中的一个范围内的字符添加反斜杠
//echo addcslashes($str,'a..h');



//$str = "Who's John Adams?";
//echo addslashes($str) ;//在指定的预定义字符前添加反斜杠 单引号 (')双引号 (")反斜杠 ()NULL



//$str = "Hello world!";
//echo bin2hex($str);//把 ASCII 字符的字符串转换为十六进制值
//echo pack("H*",bin2hex($str));//pack H* 解码



//$str = "Hello World!

";
//echo $str;
//echo chop($str);//该函数的 rtrim() 函数的别名,从字符串的末端开始删除空白字符或其他预定义字符


//echo chr(52);//从指定的 ASCII 值返回字符
//echo chr(052);//ascii 参数可以是十进制、八进制或十六进制。通过前置 0 来规定八进制,通过前置 0x 来规定十六进制
//echo chr(0x52);


//$str = "Hello world!";
//echo chunk_split($str,1,".");//把字符串分割为一连串更小的部分



//$some  =  "that is big shit" ;
//echo $r = convert_uuencode ($some);  //uuencode 算法加密
//echo "</br>";
//echo "</br>";
//echo "</br>";
//echo convert_uudecode($r);


//$str = "Hello World!";
//print_r(count_chars($str,1));



//if ( CRYPT_STD_DES  ==  1 ) {
//    echo  'Standard DES: '  .  crypt ( 'rasmuslerdorf' ,  'rl' ) .  "
" ;
//    echo "</br>";
//}
//
//if ( CRYPT_EXT_DES  ==  1 ) {
//    echo  'Extended DES: '  .  crypt ( 'rasmuslerdorf' ,  '_J9..rasm' ) .  "
" ;
//    echo "</br>";
//}
//
//if ( CRYPT_MD5  ==  1 ) {
//    echo  'MD5:          '  .  crypt ( 'rasmuslerdorf' ,  '$1$rasmusle$' ) .  "
" ;
//    echo "</br>";
//}
//
//if ( CRYPT_BLOWFISH  ==  1 ) {
//    echo  'Blowfish:     '  .  crypt ( 'rasmuslerdorf' ,  '$2a$07$usesomesillystringforsalt$' ) .  "
" ;
//    echo "</br>";
//}
//
//if ( CRYPT_SHA256  ==  1 ) {
//    echo  'SHA-256:      '  .  crypt ( 'rasmuslerdorf' ,  '$5$rounds=5000$usesomesillystringforsalt$' ) .  "
" ;
//    echo "</br>";
//}
//
//if ( CRYPT_SHA512  ==  1 ) {
//    echo  'SHA-512:      '  .  crypt ( 'rasmuslerdorf' ,  '$6$rounds=5000$usesomesillystringforsalt$' ) .  "
" ;
//    echo "</br>";
//}



//$password  =  'mypassword' ;
//// 获取散列值,使用自动盐值
//$hash  =  crypt ( $password );
//echo $hash;


/*
 * 
crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。 

有些系统支持不止一种散列类型。实际上,有时候,基于 MD5 的算法被用来替代基于标准 DES 的算法。这种散列类型由盐值参数触发。在 5.3 之前,PHP 在安装时根据系统的 crypt() 决定可用的算法。如果没有提供盐值,PHP 将自动生成一个 2 个字符(DES)或者 12 个字符(MD5)的盐值 ,这取决于 MD5 crypt() 的可用性。PHP 设置了一个名为 CRYPT_SALT_LENGTH 的常量,用来表示可用散列允许的最长可用盐值。 

基于标准 DES 算法的 crypt() 在输出内容的开始位置返回两个字符的盐值。它也只使用 str 的开始 8 个字符,所以更长的以相同 8 个字符开始的字符串也将生成相同的结果(当使用了相同的盐值时)。 

在 crypt() 函数支持多重散列的系统上,下面的常量根据相应的类型是否可用被设置为 0 或 1: 

1.CRYPT_STD_DES - 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。 
2.CRYPT_EXT_DES - 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。 
3.CRYPT_MD5 - MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。 
4.CRYPT_BLOWFISH - Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。 
5.CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。 
6.CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。 
Note: 

从 PHP 5.3.0 起,PHP 包含了它自己的实现,并将在系统缺乏相应算法支持的时候使用它自己的实现。 

 * 
 */



//$str = "Hello world. It's a beautiful day.";
//print_r (explode(" ",$str));//把字符串分割为数组,空格是这个分割符



//print_r (get_html_translation_table());
//echo "<br />";
//print_r (get_html_translation_table(HTML_ENTITIES));//HTML_ENTITIES - 翻译所有需要 URL 编码的字符,以便正确地显示在网页上。HTML_SPECIALCHARS - 翻译某些需要 URL 编码的字符,以便正确地显示在网页上。


//$str = "John & 'Adams'";
//echo htmlentities($str, ENT_COMPAT);//把字符转换为 HTML 实体
//echo "<br />";
//echo htmlentities($str, ENT_QUOTES);
//echo "<br />";
//echo htmlentities($str, ENT_NOQUOTES);
//
//
//
//htmlspecialchars_decode() 是htmlspecialchars的反转函数
//$str = "John & 'Adams'";
//echo htmlspecialchars($str, ENT_COMPAT);//把一些预定义的字符转换为 HTML 实体
//echo "<br />";
//echo htmlspecialchars($str, ENT_QUOTES);
//echo "<br />";
//echo htmlspecialchars($str, ENT_NOQUOTES);


//html_entity_decode() 是 htmlentities() 的反函数。
//$str = "John &amp; &#039;Adams&#039;";
//echo html_entity_decode($str);
//echo "<br />";
//echo html_entity_decode($str, ENT_QUOTES);
//echo "<br />";
//echo html_entity_decode($str, ENT_NOQUOTES);



//$arr = array('Hello','World!','Beautiful','Day!');
//echo implode("#",$arr);//把数组元素组合为一个字符串 


//$arr = array('Hello','World!','Beautiful','Day!');
//echo join("#",$arr);//把数组元素组合为一个字符串 


//setlocale(LC_ALL, 'US');
//$locale_info = localeconv();
//print_r($locale_info);


//rtrim()删除字符串末端的空白字符(或者其他字符) ltrim()删除字符串前端的空白字符(或者其他字符)
//trim()去除字符左右空格


//$filename = "test.txt";
//$md5file = md5_file($filename);//文件md5验证码,计算文件的 MD5 散列
//echo $md5file;





//$number = 1234.56;
//setlocale(LC_MONETARY, "en_US");//设置地区信息(地域信息)。地区信息是针对一个地理区域的语言、货币、时间以及其他信息
//echo money_format("The price is %i", $number);//把字符串格式化为货币字符串


//echo nl_langinfo();
//echo "<br />";

//echo number_format("1000000");
//echo "<br />";
//echo number_format("1000000",2);
//echo "<br />";
//echo number_format("1000000",2,",",".");
//echo "<br />";
//echo number_format("1000000",2,".",",");

//parse_str("id=23&name=John%20Adams",$myArray);
//print_r($myArray);
//
//parse_str("id=23&name=John%20Adams");
//echo $id."<br />";
//echo $name;



//$str = "Hello world. (can you hear me?)";
//echo quotemeta($str);//在字符串中某些预定义的字符前添加反斜杠


//$str = 'Hello';
//echo sha1($str);//计算字符串的 SHA-1 散列


//$filename = "test.txt";
//$sha1file = sha1_file($filename);//计算文件的 SHA-1 散列
//echo $sha1file;

//similar_text("Hello World","Hello Peter",$percent);//计算两个字符串的匹配字符的数目
//echo $percent;




//$number = 123;
//$txt = sprintf("%f",$number);
//echo $txt;


//echo str_ireplace("world","John","Hello world!");//使用一个字符串替换字符串中的另一些字符
//
//$arr = array("blue","red","green","yellow");
//print_r(str_ireplace("red","pink",$arr,$i));
//echo "Replacements: $i";



//$str = "Hello World";
//echo str_pad($str,20,".",STR_PAD_LEFT);//把字符串填充为指定的长度

//$e =5;
//echo str_repeat(".",$e);



//echo str_replace("world","John","Hello world!"); //对大小写敏感,使用一个字符串替换字符串中的另一些字符



//echo str_shuffle("Hello World");//随机地打乱字符串中的所有字符


//print_r(str_split("Hello",3));//把字符串分割到数组中,以3个字节的长度



//print_r(str_word_count("Hello world & good morning!",1));
//print_r(str_word_count("Hello world & good morning!",1,"&"));//计算字符串中的单词数



//echo strchr("Hello world!","world");//搜索一个字符串在另一个字符串中的第一次出现


//echo strcspn("Hello world!","w");//返回在找到任何指定的字符之前,在字符串查找的字符数



//echo strip_tags("Hello <b><i>world!</i></b>","<b>");//剥去 HTML、XML 以及 PHP 的标签 后面的<b>是允许的字符


//stripcslashes() 函数删除由 addcslashes() 函数添加的反斜杠。


//echo strlen("Hello world!");//返回字符串的长度


//echo strpbrk("Hello world!","oe");//在字符串中搜索指定字符中的任意一个,该函数返回指定字符第一次出现的位置开始的剩余部分。如果没有找到



//echo strrev("Hello World!");//反转字符串


//$string = "Hello world. Beautiful day today.";
//$token = strtok($string, " ");//把字符串分割为更小的字符串
//print_r($token);


//echo strtolower("Hello WORLD!");//把字符串转换为小写


//echo strtoupper("Hello WORLD!");//把字符串转换为大写


//echo strtr("Hilla Warld","ia","eo");//转换字符串中特定的字符





//echo substr("Hello world!",6,5);//返回字符串的一部分

/*
string    必需。规定要返回其中一部分的字符串。
start    
必需。规定在字符串的何处开始。
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第一个字符处开始
length    
可选。规定要返回的字符串长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回
负数 - 从字符串末端返回
 */






//echo substr_count("Hello world. The world is nice","world");//计算子串在字符串中出现的次数



//echo ucfirst("hello world");//把字符串中的首字符转换为大写




//$str = "An example on a long word is: Supercalifragulistic";
//echo wordwrap($str,15);//按照指定长度对字符串进行折行处理


 
原文地址:https://www.cnblogs.com/zx-admin/p/4347161.html