PHP进阶

1、  PHP函数

1.1函数的定义

通过关键字function来定义函数

function function_name(){

 

}

1.2用户自定义函数

1.2.1不含参数的函数

1.2.2含参数的函数

1.2.3具有返回值的函数

1.3PHP预定义函数

Php为我们预定义很多实用的函数,比如说phpinfo();move_uploaded_file();array();……..

1.4习题

1、用户可以使用关键字(      )来定义一个函数。

2、用户的自定义函数使用(          )来返回值。

3、编程题:自定义一个Add();输出两个数的和。

提示:

<?php

function Add($a = 1,$b = 2){

$sum = $a + $b;

return $sum;

}

echo Add();

echo Add(4,6);

2、  数组

2.1数组的定义

在php中使用array()来定义数组;

$office2007 = array(“word”,”excle”,”ppt”);

这种情况下,excle的索引是1;数组的索引是从0开始的;

此外我们还可以用

$office2003 = array(

       ‘w’ =>’word’,

       ‘p’=>’ppt’,

       ‘s’=>’excel’

Ppt的索引就是p,$office2003[p]

现在看:

$office2003 = array(

       0 =>’word’,

       3=>’ppt’,

       ’excel’

你说excle的索引值是什么?

通过赋值运算符“=”可以将一个数组复制到另一个数组;

使用两个数组创建一个数组array_combine();

<?php

$keys = array(1,2,3,4);

$values = array('spring','summer','qiutian','winter');

$c = array_combine($keys, $values);

print_r($c);

173248_bEhm_1998430.png

array_combine(($keys, $values);

注意:合并的两个数组必须具有相同的元素个数;

2.2输出数组

2.2.1使用print_r();

2.2.2使用do…while输出;

$office2003 = array(

0 =>'word',

5 =>'ppt',

'excel'

);

 

do{

    echo "\$office2003[$i] = ".$office2003[$i];echo "<br>";echo "<br>";

    $i++;

}while ($office2003[$i] != 'excel');

echo "\$office2003[$i] = ".$office2003[$i];echo "<br>";echo "<br>";

2.2.3使用while循环输出

<?php

$i = 0;

$office2007 = array(

0 =>'word',

5 =>'ppt',

'excel'

);

while ($office2007[$i] != 'excel'){

    echo "\$office2007[$i] = ".$office2007[$i];echo "<br>";echo "<br>";

    $i++;

}

echo "\$office2007[$i] = ".$office2007[$i];echo "<br>";echo "<br>";

2.2.4使用for循环输出

$values = array('spring','summer','qiutian','winter');

 

for($a = 0; $a < count($values);$a++){

   

    echo $values[$a];

    echo "<br>";

}

2.2.5使用foreach输出

<?php

$keys = array(1,2,3,4);

$values = array('spring','summer','qiutian','winter');

$c = array_combine($keys, $values);

foreach ($c as $string){

   

    echo $string;

    echo "<br>";

}

另外一种方式

<?php

$keys = array(1,2,3,4);

$values = array('spring','summer','qiutian','winter');

$c = array_combine($keys, $values);

foreach ($c as $a => $b){

   

    echo $a.":".$b;

    echo "<br>";

}

2.3数组元素计数

使用count();来计数。

2.4数组的分割与合并

2.4.1数组的分割

使用的函数是array_chunk();实现对数组的分割;

<?php

$keys = array(1,2,3,4);

$values = array('spring','summer','qiutian','winter');

$c = array_combine($keys, $values);

echo '<pre>';

print_r(array_chunk($c, 2));

 

print_r(array_chunk($c, 2,TRUE));

173248_fdkS_1998430.png

array_chunk()有三个参数,第一个参数放我们的原数组,的个参数方的是被分割后每个数组中的元素个数,第三个参数是可选参数,为TRUE的时候,分割后的每个数组的索引使用原来的索引名。为False的时候,索引都将从0开始。并且这个函数的返回值还是一个数组。

2.4.2数组的合并

使用到的函数是array_merge();接受一个或者多个数组作为参数。函数的返回值还是一个数组。

<?php

$a = array('earth','venus');

$b = array(1=>'day1',2=>'day2',3=>'day3');

 

$c = array_merge($a,$b);

 

echo "<pre>";

print_r($c);

 

print_r($a);

print_r($b);

173248_BQOo_1998430.png

2.5数组的下表和索引

在一个数组中,使用current()可以输出当前的元素,这就相当于在一个数组中有一个指针,默认情况下这个指针是在第一个元素的位置,当执行完next(),指针往下一个元素移动,perv()指针往上一个元素移动,执行end(),指向最后一个元素;reset(),返回第一个。

<?php

$arr1 = array(

    'day1',

    'day2',

    'day3',

    'day4'

);

$arr2 = array(

    1,

    2,

    3,

    4

);

$arr3 = array_combine($arr2, $arr1);

echo "<pre>";

echo current($arr1);

echo "<br>";

next($arr1);

echo "<br>";

echo current($arr1);

echo "<br>";

prev($arr1);

echo "<br>";

echo current($arr1);

echo "<br>";

echo end($arr1);

echo "<br>";

echo reset($arr1);

2.6php数组函数大全

函数

描述

array()

创建数组。

array_change_key_case()

把数组中所有键更改为小写或大写。

array_chunk()

把一个数组分割为新的数组块。

array_column()

返回输入数组中某个单一列的值。

array_combine()

通过合并两个数组来创建一个新数组。

array_count_values()

用于统计数组中所有值出现的次数。

array_diff()

比较数组,返回差集(只比较键值)。

array_diff_assoc()

比较数组,返回差集(比较键名和键值)。

array_diff_key()

比较数组,返回差集(只比较键名)。

array_diff_uassoc()

比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。

array_diff_ukey()

比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。

array_fill()

用给定的键值填充数组。

array_fill_keys()

用指定键名的给定键值填充数组。

array_filter()

用回调函数过滤数组中的元素。

array_flip()

交换数组中的键和值。

array_intersect()

比较数组,返回交集(只比较键值)。

array_intersect_assoc()

比较数组,返回交集(比较键名和键值)。

array_intersect_key()

比较数组,返回交集(只比较键名)。

array_intersect_uassoc()

比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。

array_intersect_ukey()

比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。

array_key_exists()

检查指定的键名是否存在于数组中。

array_keys()

返回数组中所有的键名。

array_map()

把数组中的每个值发送到用户自定义函数,返回新的值。

array_merge()

把一个或多个数组合并为一个数组。

array_merge_recursive()

递归地合并一个或多个数组。

array_multisort()

对多个数组或多维数组进行排序。

array_pad()

用值将数组填补到指定长度。

array_pop()

删除数组的最后一个元素(出栈)。

array_product()

计算数组中所有值的乘积。

array_push()

将一个或多个元素插入数组的末尾(入栈)。

array_rand()

返回数组中一个或多个随机的键。

array_reduce()

通过使用用户自定义函数,以字符串返回数组。

array_replace()

使用后面数组的值替换第一个数组的值。

array_replace_recursive()

递归地使用后面数组的值替换第一个数组的值。

array_reverse()

以相反的顺序返回数组。

array_search()

搜索数组中给定的值并返回键名。

array_shift()

删除数组中首个元素,并返回被删除元素的值。

array_slice()

返回数组中被选定的部分。

array_splice()

删除并替换数组中指定的元素。

array_sum()

返回数组中值的和。

array_udiff()

比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。

array_udiff_assoc()

比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

array_udiff_uassoc()

比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。

array_uintersect()

比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。

array_uintersect_assoc()

比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

array_uintersect_uassoc()

比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。

array_unique()

删除数组中的重复值。

array_unshift()

在数组开头插入一个或多个元素。

array_values()

返回数组中所有的值。

array_walk()

对数组中的每个成员应用用户函数。

array_walk_recursive()

对数组中的每个成员递归地应用用户函数。

arsort()

对关联数组按照键值进行降序排序。

asort()

对关联数组按照键值进行升序排序。

compact()

创建包含变量名和它们的值的数组。

count()

返回数组中元素的数目。

current()

返回数组中的当前元素。

each()

返回数组中当前的键/值对。

end()

将数组的内部指针指向最后一个元素。

extract()

从数组中将变量导入到当前的符号表。

in_array()

检查数组中是否存在指定的值。

key()

从关联数组中取得键名。

krsort()

对数组按照键名逆向排序。

ksort()

对数组按照键名排序。

list()

把数组中的值赋给一些变量。

natcasesort()

自然排序算法对数组进行不区分大小写字母的排序。

natsort()

自然排序算法对数组排序。

next()

将数组中的内部指针向前移动一位。

pos()

current() 的别名。

prev()

将数组的内部指针倒回一位。

range()

创建包含指定范围单元的数组。

reset()

将数组的内部指针指向第一个元素。

rsort()

对数组逆向排序。

shuffle()

将数组打乱。

sizeof()

count() 的别名。

sort()

对数组排序。

uasort()

使用用户自定义的比较函数对数组中的键值进行排序。

uksort()

使用用户自定义的比较函数对数组中的键名进行排序。

usort()

使用用户自定义的比较函数对数组进行排序。

2.7常用的php数组函数

sort();rsort();

<?php

$arr1 = array('huangzhipeng','fanghejun','liuzhixiong','zhouyuting');

echo "首先原样输出这个数组<br>";

echo "<pre>";

print_r($arr1);

echo "<br>";echo "<br>";echo "<br>";

sort($arr1);//对原来的菽粟进行排序,升序

print_r($arr1);

echo "<br>";echo "<br>";echo "<br>";

rsort($arr1);//降序

print_r($arr1);

随机排序shuffle();

<?php

$arr1 = array('huangzhipeng','fanghejun','liuzhixiong','zhouyuting');

echo "首先原样输出这个数组<br>";

echo "<pre>";

print_r($arr1);

echo "<br>";echo "<br>";echo "<br>";

sort($arr1);//对原来的菽粟进行排序,升序

print_r($arr1);

echo "<br>";echo "<br>";echo "<br>";

rsort($arr1);//降序

print_r($arr1);

shuffle($arr1);//随机排序

print_r($arr1);

echo "<br>";echo "<br>";echo "<br>";

一次给多个变量赋值list();

$arr1 = array('huangzhipeng','fanghejun','liuzhixiong','zhouyuting');

list($a,$b,$c,$d) = $arr1;

echo $a;echo "<br>";echo "<br>";

echo $b;echo "<br>";echo "<br>";

echo $c;echo "<br>";echo "<br>";

echo $d;echo "<br>";echo "<br>";

快速创建数组 range();

<?php

$arr1 = range(11, 100);

$arr2 = range(a, h);

$arr3 = range(1, 100,2);

echo "<pre>";

print_r($arr1);

print_r($arr2);

print_r($arr3);

Array_push();array_pop()

<?php

$arr1 = range(11, 100);

$arr2 = range(a, h);

$arr3 = range(1, 100, 2);

 

// array_push($arr2, i);

echo array_push($arr2, i);//返回当前数组元素的个数

echo array_pop($arr2);//返回的是数组的最后一个元素

echo "<pre>";

// print_r($arr1);

print_r($arr2);

// print_r($arr3);

in_array()

<?php

$arr1 = array('huangzhipeng','fanghejun','liuzhixiong','zhouyuting');

if(in_array("huangzhipenger", $arr1)){

    echo "这个元素在数组中";

}else{

    echo "您拨打的用户不存在,请查证后再拨!";

}

Key()

<?php

$arr1 = array('huangzhipeng','fanghejun','liuzhixiong','zhouyuting');

 echo  key($arr1);

 end($arr1);

 echo  key($arr1);

 echo  current($arr1);

2.8习题

1、在php开发中使用哪个函数来计算数组的元素个数?

2、对数组按顺向排序使用哪个函数?逆向呢?

3、如何获取数组的元素的索引名?

4、快速的填充一个数组采取哪个函数?

5、(编程题)自己查API,任意给两个数组,输出这两个数组的交集!

3、PHP对字符串的处理

3.1字符串分割和合并

3.1.1字符串的分割

<?php

$s = "php,c,c++,java,oc,c#,javaScript";

$a = explode(',', $s);

echo "<pre>";

print_r($a);

$b = explode(',', $s,4);

print_r($b);

3.1.2字符串的合并

<?php

$arr = range(a, x);

echo"<pre>";

print_r($arr);

$str = implode('#', $arr);

echo $str;

3.2字符串函数的API

PHP 字符串函数是 PHP 核心的组成部分。无需安装即可使用这些函数。

函数

描述

addcslashes()

返回在指定的字符前添加反斜杠的字符串。

addslashes()

返回在预定义的字符前添加反斜杠的字符串。

bin2hex()

ASCII 字符的字符串转换为十六进制值。

chop()

删除字符串右侧的空白字符或其他字符。

chr()

从指定的 ASCII 值返回字符。

chunk_split()

把字符串分割为一系列更小的部分。

convert_cyr_string()

把字符串由一种 Cyrillic 字符集转换为另一种。

convert_uudecode()

解码 uuencode 编码字符串。

convert_uuencode()

使用 uuencode 算法对字符串进行编码。

count_chars()

返回有关字符串中所用字符的信息。

crc32()

计算字符串的 32 CRC

crypt()

单向的字符串加密法(hashing)。

echo()

输出一个或多个字符串。

explode()

把字符串打散为数组。

fprintf()

把格式化的字符串写入到指定的输出流。

get_html_translation_table()

返回由 htmlspecialchars() htmlentities() 使用的翻译表。

hebrev()

把希伯来文本转换为可见文本。

hebrevc()

把希伯来文本转换为可见文本,并把新行(\n)转换为 <br>

hex2bin()

把十六进制值的字符串转换为 ASCII 字符。

html_entity_decode()

HTML 实体转换为字符。

htmlentities()

把字符转换为 HTML 实体。

htmlspecialchars_decode()

把一些预定义的 HTML 实体转换为字符。

htmlspecialchars()

把一些预定义的字符转换为 HTML 实体。

implode()

返回由数组元素组合成的字符串。

join()

implode() 的别名。

lcfirst()

把字符串的首字符转换为小写。

levenshtein()

返回两个字符串之间的 Levenshtein 距离。

localeconv()

返回本地数字及货币格式信息。

ltrim()

移除字符串左侧的空白字符或其他字符。

md5()

计算字符串的 MD5 散列。

md5_file()

计算文件的 MD5 散列。

metaphone()

计算字符串的 metaphone 键。

money_format()

返回格式化为货币字符串的字符串。

nl_langinfo()

返回特定的本地信息。

nl2br()

在字符串中的每个新行之前插入 HTML 换行符。

number_format()

以千位分组来格式化数字。

ord()

返回字符串中第一个字符的 ASCII 值。

parse_str()

把查询字符串解析到变量中。

print()

输出一个或多个字符串。

printf()

输出格式化的字符串。

quoted_printable_decode()

quoted-printable 字符串转换为 8 位字符串。

quoted_printable_encode()

8 位字符串转换为 quoted-printable 字符串。

quotemeta()

引用元字符。

rtrim()

移除字符串右侧的空白字符或其他字符。

setlocale()

设置地区信息(地域信息)。

sha1()

计算字符串的 SHA-1 散列。

sha1_file()

计算文件的 SHA-1 散列。

similar_text()

计算两个字符串的相似度。

soundex()

计算字符串的 soundex 键。

sprintf()

把格式化的字符串写入变量中。

sscanf()

根据指定的格式解析来自字符串的输入。

str_getcsv()

CSV 字符串解析到数组中。

str_ireplace()

替换字符串中的一些字符(对大小写不敏感)。

str_pad()

把字符串填充为新的长度。

str_repeat()

把字符串重复指定的次数。

str_replace()

替换字符串中的一些字符(对大小写敏感)。

str_rot13()

对字符串执行 ROT13 编码。

str_shuffle()

随机地打乱字符串中的所有字符。

str_split()

把字符串分割到数组中。

str_word_count()

计算字符串中的单词数。

strcasecmp()

比较两个字符串(对大小写不敏感)。

strchr()

查找字符串在另一字符串中的第一次出现。(strstr() 的别名。)

strcmp()

比较两个字符串(对大小写敏感)。

strcoll()

比较两个字符串(根据本地设置)。

strcspn()

返回在找到某些指定字符的任何部分之前,在字符串中查找的字符数。

strip_tags()

剥去字符串中的 HTML PHP 标签。

stripcslashes()

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

stripslashes()

删除由 addslashes() 函数添加的反斜杠。

stripos()

返回字符串在另一字符串中第一次出现的位置(对大小写不敏感)。

stristr()

查找字符串在另一字符串中第一次出现的位置(大小写不敏感)。

strlen()

返回字符串的长度。

strnatcasecmp()

使用一种"自然排序"算法来比较两个字符串(对大小写不敏感)。

strnatcmp()

使用一种"自然排序"算法来比较两个字符串(对大小写敏感)。

strncasecmp()

n 个字符的字符串比较(对大小写不敏感)。

strncmp()

n 个字符的字符串比较(对大小写敏感)。

strpbrk()

在字符串中查找一组字符的任何一个字符。

strpos()

返回字符串在另一字符串中第一次出现的位置(对大小写敏感)。

strrchr()

查找字符串在另一个字符串中最后一次出现。

strrev()

反转字符串。

strripos()

查找字符串在另一字符串中最后一次出现的位置(对大小写不敏感)。

strrpos()

查找字符串在另一字符串中最后一次出现的位置(对大小写敏感)。

strspn()

返回在字符串中包含的特定字符的数目。

strstr()

查找字符串在另一字符串中的第一次出现(对大小写敏感)。

strtok()

把字符串分割为更小的字符串。

strtolower()

把字符串转换为小写字母。

strtoupper()

把字符串转换为大写字母。

strtr()

转换字符串中特定的字符。

substr()

返回字符串的一部分。

substr_compare()

从指定的开始位置(二进制安全和选择性区分大小写)比较两个字符串。

substr_count()

计算子串在字符串中出现的次数。

substr_replace()

把字符串的一部分替换为另一个字符串。

trim()

移除字符串两侧的空白字符和其他字符。

ucfirst()

把字符串中的首字符转换为大写。

ucwords()

把字符串中每个单词的首字符转换为大写。

vfprintf()

把格式化的字符串写到指定的输出流。

vprintf()

输出格式化的字符串。

vsprintf()

把格式化字符串写入变量中。

wordwrap()

打断字符串为指定数量的字串

3.3常用的php string函数

<?php

$s = "<h1>woai&nbsp;php</h1>";

$s1 = ".NET";

echo sha1($s);//sha1加密

echo "<br>";

echo md5($s);//md5加密

$a = md5($s);

$b = strlen($a);//字符串的长度

echo "<br>";

 

echo $b;echo "<br>";

// echo str_replace(php, $s1, $s);//$s1替换 $s中的php

echo substr($s,4,3);echo "<br>";//截取$s的一部分,从第四开始到后面3

 

echo strtoupper($s);echo "<br>";//将字符串全部变为大写

echo strtolower($s1);//将字符串全部变为小写

 

echo "<br>";

echo $s;//直接将S输出

echo "<br>";

echo htmlentities($s);echo "<br>";//html标签的处理

echo htmlspecialchars($s);//对特殊字符的处理

4、php处理时间和日期

4.1获取格式化的日期和时间

Date(),格式要求:

format character

Description

Example returned values

d

Day of the month, 2 digits with leading zeros

01 to 31

D

A textual representation of a day, three letters

Mon through Sun

j

Day of the month without leading zeros

1 to 31

l (lowercase 'L')

A full textual representation of the day of the week

Sunday through Saturday

N

ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0)

1 (for Monday) through 7 (for Sunday)

S

English ordinal suffix for the day of the month, 2 characters

st, nd, rd or th. Works well with j

w

Numeric representation of the day of the week

0 (for Sunday) through 6 (for Saturday)

z

The day of the year (starting from 0)

0 through 365

W

ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)

Example: 42 (the 42nd week in the year)

F

A full textual representation of a month, such as January or March

January through December

m

Numeric representation of a month, with leading zeros

01 through 12

M

A short textual representation of a month, three letters

Jan through Dec

n

Numeric representation of a month, without leading zeros

1 through 12

t

Number of days in the given month

28 through 31

L

Whether it's a leap year

1 if it is a leap year, 0 otherwise.

o

ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in PHP 5.1.0)

Examples: 1999 or 2003

Y

A full numeric representation of a year, 4 digits

Examples: 1999 or 2003

y

A two digit representation of a year

Examples: 99 or 03

a

Lowercase Ante meridiem and Post meridiem

am or pm

A

Uppercase Ante meridiem and Post meridiem

AM or PM

B

Swatch Internet time

000 through 999

g

12-hour format of an hour without leading zeros

1 through 12

G

24-hour format of an hour without leading zeros

0 through 23

h

12-hour format of an hour with leading zeros

01 through 12

H

24-hour format of an hour with leading zeros

00 through 23

i

Minutes with leading zeros

00 to 59

s

Seconds, with leading zeros

00 through 59

u

Microseconds (added in PHP 5.2.2). Note that date will always generate 000000 since it takes an integer parameter, whereas DateTime::format does support microseconds.

Example: 654321

e

Timezone identifier (added in PHP 5.1.0)

Examples: UTC, GMT, Atlantic/Azores

I (capital i)

Whether or not the date is in daylight saving time

1 if Daylight Saving Time, 0 otherwise.

O

Difference to Greenwich time (GMT) in hours

Example: +0200

P

Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3)

Example: +02:00

T

Timezone abbreviation

Examples: EST, MDT ...

Z

Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

-43200 through 50400

c

ISO 8601 date (added in PHP 5)

2004-02-12T15:19:21+00:00

r

RFC 2822 formatted date

Example: Thu, 21 Dec 2000 16:01:07 +0200

U

Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

See also time

举个例子:

<?php

echo date('Y-m-d');

echo "<br>";

echo date('H:i:s');

echo "<br>";

echo "今天是".date('Y')."年的第".date('z')."";

4.2处理UNIX时间戳

UNIX时间戳是从1970年1月1日0时开始的秒数。

mktime(int $hour, int $minute, int $secong,int $month,int $day,int $year);

<?php

$borth = mktime(0,0,0,7,1,1996);

$teday = mktime(0,0,0,4,11,2016);

$day = $teday-$borth;

echo "黄志鹏截止今天共活".$day/(24*60*60)."";

 

4.3获取时间的相关信息

Getdate()返回值是一个数组,它一个参数应该是一个时间戳,如果没有传参,默认情况下打印出来的是当前的时间。我们要把一个数组打印出来的话,采取的函数是print_r();

<?php

echo time();

$arr = getdate(time());

echo "<pre>";

print_r($arr);

4.4验证时间的有效性

Checkdate($month,$day,$year)检验传进的这个日期是否合法

<?php

if(checkdate(4,32,2016)){

   

    echo "日期是有效的";

   

}else{

   

    echo "无效的日期";

}

5 用PHP操作目录和文件

5.1PHP操作目录

Opendir(),closedir(),readdir()

<?php

$dir = "F:\\PHP";

if (is_dir($dir)){

    if($dh = opendir($dir)){

        while(($fn = readdir($dh) )!== FALSE){

            $str = iconv('GB2312','UTF-8',$fn);

            echo "fn:".$str;

            echo "<br>";

            echo "<br>";

        }

        closedir($dh);

    }

   

}

 

用scandir列出当前目录下的所有文件:

<?php

$dir = "F:\\PHP";

 

$fn = scandir($dir);

 

$fn1 = scandir($dir,1);

 

echo "<pre>";

 

print_r($fn);

print_r($fn1);

获取和改变php的工作目录

<?php

echo getcwd();//返回当前的工作目录,如果失败返回FALSE;不需要传参

$a = getcwd();

chdir("F:\\PHP");//改变当前的工作目录;传入参数是一个目录

echo "<br>";

echo getcwd();

chdir($a);

echo "<br>";

echo getcwd();

 

5.2PHP操作文件

5.2.1读取文件

在PHP中操作文件是经常要做的一件工作,系统发生错误,错误日志等这些信息是要及时保存在我们的一个文件中去,不仅保存,还要读取;基于这些目的,我要操作的文件的方式:打开文件、关闭文件、读取文件、写入文件

打开文件:fopen($filename, $mode)

$filename:是指文件的名字;

$mode:指的是打开文件后的操作方式,从哪开始操作。

Mode

描述

'r'

以只读的方式打开文件,文件指针指到文件的开始处

'r+'

Open for reading and writing; place the file pointer at the beginning of the file.

'w'

以写入的方式打开,文件指针指向文件的开始处,并将文件的大小设为0;如果文件不存在则尝试创建文件。

'w+'

Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

'a'

以写入的方式打开文件,将文件的指针指向文件末尾处,如果文件不存在则创建该文件。

'a+'

Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

'x'

Create and open for writing only; place the file pointer at the beginning of the file. If the file already exists, the fopen call will fail by returning false and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call.

'x+'

Create and open for reading and writing; place the file pointer at the beginning of the file. If the file already exists, the fopen call will fail by returning false and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call.

但凡涉及到文件的打开,就一定要将文件关闭

关闭文件fclose$fp

读取文件:

/*

 * fopen()打开我们的一个文件,可以指定打开文件的方式;

 * feof()判断是否到了文件的最后一行

 * fgets()一行一行的去读取我们的文件

 * iconv()改变编码格式

 * fclose()关闭打开的文件

 */

function myOpenFile($dp)

{

    $fp = fopen($dp, r);

    if ($fp == false) {

        echo "打开文件时发生一个未知的错误,请检查您的文件路径,修改正确后再尝试打开!";

        exit();

    } else {

        // readfile($fp);

        // file($fp);

        while (! feof($fp)) {

            $line = fgets($fp);

            $line1 = iconv("GB2312", "utf-8", $line);

            echo $line1;

            echo "<br>";

        }

    }

   

    fclose($fp);

}

myOpenFile($_SERVER['DOCUMENT_ROOT'] . "/myblog/1.txt");

/* 上面的例子中我们使用的是fgets()函数来一行一行的读取文件,此外还别的几个函数

 * readfile()

 * file()

 * get_file_contents()

 *  */

5.2.2写入文件

Fwrite

$file = $_SERVER['DOCUMENT_ROOT'] . "/myblog/1.txt";

    $content = "\n大双,上课的时候就不要讨论学生工作的事情了,作为班长,很忙,理解,但是班长之前先做好学生!";

    $content1 = iconv("utf-8", "GB2312", $content);

   

    $fp = fopen($file, a);

   

    if ($fp == false) {

       

        echo "文件打开失败!";

        exit();

    } else {

        $a = fwrite($fp, $content1);

        if ($a == FALSE) {

            echo "文件写入失败!";

            exit();

        } else {

            echo "恭喜您,文件写入成功!";

        }

    }

   

    fclose($fp);

5.2.3获取文件的相关信息

一个文件包含的信息有所有者、大小、文件的类型,

fileowner($filename);//传入文件名,若成功返回整型的用户ID,否则的话返回false

filesize($filename);//传入的文件名,若成功返回整型的文件的字节数,否则返回false

filetype($filename);//传入的文件名,(file,dir,link,block,unknown)若成功返回文件类型的一个字符串,否则返回false

$filename = $_SERVER['DOCUMENT_ROOT'] . "/myblog/1.txt";

echo fileowner($filename);

echo "<br>";

echo "<br>";

echo filesize($filename);

echo "<br>";

echo "<br>";

echo filetype($filename);

echo "<br>";

echo "<br>";

is_dir($filename);判断是都是一个目录,若是则返回true,否则返回false

is_file($filename); 判断是都是一个文件,若是则返回true,否则返回false

is_readable($filename); 判断文件是都可读,若是则返回true,否则返回false

is_writeable($filename); 判断文件是都可写,若是则返回true,否则返回false

5.3通用操作

5.3.1获取路径中的文件名和目录名

$path = "D:\Apache2.2\htdocs\upload\a1.txt";

 

$filename = basename($path);//参数是一个路径,返回的是指定路径中文件名。

$dirname = dirname($path);//参数是一个路径,返回的是指定路径中的目录名。

 

echo "完整路径名是:".$path;echo "<br>";

echo "<br>";

 

echo "路径里的目录名是:".$dirname;

echo "<br>";

echo "<br>";

echo "路径里的文件名是:".$filename;

echo "<br>";

echo "<br>";

file_exists($path);//判断文件或目录是否存在;若存在返回true,否则返回false

mkdir($pathname);//参数是一个路径名,若成功返回true,否则返回false

rmdir($dirname);//删除一个目录,若成功返回true,否则返回false

copy($source, $dest);//$source指定的位子中复制到$dest里面;若成功返回true,否则返回false

unlink($filename);//传入要删除的文件名,如果删除成功返回true,否则返回false

rename($oldname, $newname);//用吧参数$oldname指定的文件名重命名为由$newname指定的名字,这两两个参数都是路径的话,就实现的移动。

5.3.2用HTTP协议打开文件

fopen("http://localhost/day0413/demo2.php", r);

同样可以用fopen()来打开远程服务器上的一个文件。

5.3.3包含指定文件到当前文件中

include 'demo.php';

5.4php函数API

函数

描述

PHP

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

6PHP中对URL、HTTP的处理

6.1URL地址分析

PHP的实际应用中,对URL的处理主要涉及到的是URL的编码、解码以及分析3方面。PHP提供3个函数来对URL进行处理:urlencode()urldecode()parse_url()

为什么要对URL进行处理?

在程序中,有时候我们要将URL作为一个整体,通过另一个URL传递给一个程序。因为被传递的URL里面也可能带有查询的字符串,为了避免和原URL的参数起冲突,需要将被传递的URL进行处理,也就是对其进行编码。此外,对于中文参数值的传递也应该进行URL的编码。

6.1.1对URL进行编码

urlencode($str);

将一个字符串作为参数传入,返回值也是一个字符串,返回值字符串里面的多有非字母和数字字符都变成了一个%和一个两位的十六进制数。&编码之后就变成了“%26

说明:在编码中如果遇到了一个空格,则会被转换成一个(+)。另外,urlencode($str);不会对-_.做转换。

<?php

$url = "http://localhost.com/?user=abcd&code=1234";

$bianma = urlencode($url);

echo "编码前:".$url;

echo "<br>";

echo "编码后:".$bianma;

6.1.2对URL进行解码

<?php

$url = "http://localhost.com/?user=abcd&code=1234";

$bianma = urlencode($url);

echo "编码前:".$url;

echo "<br>";

echo "编码后:".$bianma;

$jiema = urldecode($bianma);

echo "<br>";

echo "解码后:".$jiema;

6.1.3对URL地址进行分析

一个有效的URL地址由多个部分组成,如:协议部分、主机(IP地址)部分、端口号。有的时候需要使用URL中的某一个部分,单纯的通过字符串的处理可能效率不高,而且容易出错。

parse_url($url);参数是一个URL,返回值是一个关联数组,此数组中存储了URL地址中的多个部分

scheme:协议

host:主机域名

port:端口号

user:用户名

pass:用户密码

query:查询参数字符串

fragment:参数片段

path:访问路径

$a = parse_url($url);

echo "<pre>";

print_r($a);

173457_21qr_1998430.png

6.2HTTP应用

6.2.1生成一个HTTP头

<?php

header("location:http://www.php.net");

exit;

打开之后链接自动跳转至www.php.net

如果你想限定一些页面是用户不能访问的,在头标里面可以做一些设置,

<?php

header('HTTP/1.1 404 Not Found');

header("status: 404 Not Found");

如果访问上述网页,用户会看懂“找不到网页”和“HTTP 404”的提示。

通过header()可以回去到某个页面最新的内容,而不是服务器缓存。

<?php

//你得告诉浏览器当前页面是过期的,给浏览器一个时间,这个实践只要是一个过去的时间就可以

header("Expires : Mon, 26 Jul 1970 05:00:00 GMT");

//告诉浏览器当前页面的最后跟新日期,现在告诉浏览器的是当前的系统时间

header("Last-modified:".gmdate("D,d M Y H:i:s")."GMT");

//告诉浏览器你不要使用缓存

header("Cache-Control : no-cache,must-revalidate");

 

header("Pragma : no-cache");

header("Content-type: application/file");

header("Content-Length: 2850");

header("Accept-Ranges: bytes");

header("Content-Disposition: attachment; filename=afilename");

6.2.2获取HTTP头信息

$_SERVER

<?php

echo "<pre>";

print_r($_SERVER);

可以获取到HTTP头信息

6.3在php中生成cookie

Cookie是存放在客户端的一组数据,它有服务器的脚本程序生成、读写,并且以文件的形式存放在远程客户端,作用主要是用来识别用户的身份。PHP中的session也通过cookie来区分不同的用户,它可以很容易的为每一个用户在服务器端建立一个临时的数据通道,通过这个通道,服务器实现了对不同用户的区分或者验证了不同用户的身份。

6.3.1生成cookie

通过一个函数setcookie();

在上的函数中有六个参数,分别是

Name:表示cookie的名称

  • Value :表示该cookie的值,保存在客户端,因此不要保存敏感或机密的数据,当这个参数为空的时候,表示撤销客户端中该cookie的资料。

  • Expire:表示的是cookie的有效截止时间,过期时间,该参数必须是整型。

  • Path :表示的是cookie的有效路径

  • Domain:表示的是cookie的有效域名

  • Secure:表示的在HTTPS的安全传输时才有效

以上参数除了第一个参数外,其他参数都可以省略

<?php

setcookie("testcookie","ilovePHP");

注意:使用函数setcookie()给一个cookie设定的值只能是数字或字符串,不能是数组、对象等复杂的数据结构。

6.3.2获取cookie

当cookie被设置以后,我们可以通过PHP的预定义变量$_COOKIE来获取cookie;要注意的是正能在其他页面使用这个变量来获取设置过的cookie,因为在这个页面设置cookie后并不会立马在本页生效,除非你刷新。

setcookie("testcookie","ilovePHP");

echo $_COOKIE['testcookie'];

 

<?php

setcookie("testcookie[0]","ilovePHP");

setcookie("testcookie[1]","ilovejava");

setcookie("testcookie[2]","iloveC#");

 

if(isset($_COOKIE['testcookie'])){

    foreach ($_COOKIE['testcookie'] as $name => $value){

        echo "$name : $value<br>";

    }

}

 

6.3.3设定cookie的有效期

setcookie("testcookie[0]","ilovePHP",time() + 60*60);//设定cookie一个小时之后失效

 

6.3.4解决cookie失效的问题

Cookie失效主要有两种原因造成;一种是用户关闭了浏览器对cookie的支持,一种浏览器本身不支持cookie技术。

当网站中使用了cookie的时候,也必须使用cookie才能运行,可以检查当前的浏览器是否支持cookie。

<?php

setcookie("test","data");

 

if($_COOKIE["test"] != "data"){

    echo "请打开浏览器的cookie支持,再浏览本页面!";

        exit;

}else {

   

    echo "您的浏览器支持cookie";

}

6.3.5设置cookie的有效路径

Cookie的有效路径一般设定在网站根目录下,表示cookie的有效范围是整个网站,如果你指定cookie的一个路径,表示cookie的有效路径是当前目录下面的文件和目录有效,而它上级目录无效的。

setcookie("testcookie[0]","ilovePHP",time() + 60*60,'/');//全站有效

6.3.6删除cookie

在程序中,我们使用完毕cookie之后,出于安全性的考虑,我们需要将cookie删除。在php中没有专门的删除cookie的函数,但是可以使用setcookie()和setrawcookie()把已知的cookie值设定为空,达到删除的效果。

setcookie("testcookie[0]","",time() + 60*60,'/');//设定cookie一个小时之后失效

setcookie("testcookie[1]","");

setcookie("testcookie[2]","");

 

if(isset($_COOKIE['testcookie'])){

    foreach ($_COOKIE['testcookie'] as $name => $value){

        echo "$name : $value<br>";

    }

}

 

7.php中的数学函数

随机数

<?php

rand(600,10000);//生成60010000之间的一个随机数

mt_rand()%100+1;//生成1100之间的随机数

function jiwang1401(){

   

echo "请一班的".rand(1, 27)."号同学回答问题";

 

}

function jiwang1402(){

 

    echo "请二班的".rand(1, 34)."号同学回答问题";

 

}

jiwang1401();

echo "<br>";echo "<br>";

jiwang1402();

 

 

Php中的数学函数

函数

描述

PHP

abs()

绝对值。

3

acos()

反余弦。

3

acosh()

反双曲余弦。

4

asin()

反正弦。

3

asinh()

反双曲正弦。

4

atan()

反正切。

3

atan2()

两个参数的反正切。

3

atanh()

反双曲正切。

4

base_convert()

在任意进制之间转换数字。

3

bindec()

把二进制转换为十进制。

3

ceil()

向上舍入为最接近的整数。

3

cos()

余弦。

3

cosh()

双曲余弦。

4

decbin()

把十进制转换为二进制。

3

dechex()

把十进制转换为十六进制。

3

decoct()

把十进制转换为八进制。

3

deg2rad()

将角度转换为弧度。

3

exp()

返回 Ex 的值。

3

expm1()

返回 Ex - 1 的值。

4

floor()

向下舍入为最接近的整数。

3

fmod()

返回除法的浮点数余数。

4

getrandmax()

显示随机数最大的可能值。

3

hexdec()

把十六进制转换为十进制。

3

hypot()

计算直角三角形的斜边长度。

4

is_finite()

判断是否为有限值。

4

is_infinite()

判断是否为无限值。

4

is_nan()

判断是否为合法数值。

4

lcg_value()

返回范围为 (0, 1) 的一个伪随机数。

4

log()

自然对数。

3

log10()

10 为底的对数。

3

log1p()

返回 log(1 + number)

4

max()

返回最大值。

3

min()

返回最小值。

3

mt_getrandmax()

显示随机数的最大可能值。

3

mt_rand()

使用 Mersenne Twister 算法返回随机整数。

3

mt_srand()

播种 Mersenne Twister 随机数生成器。

3

octdec()

把八进制转换为十进制。

3

pi()

返回圆周率的值。

3

pow()

返回 x y 次方。

3

rad2deg()

把弧度数转换为角度数。

3

rand()

返回随机整数。

3

round()

对浮点数进行四舍五入。

3

sin()

正弦。

3

sinh()

双曲正弦。

4

sqrt()

平方根。

3

srand()

播下随机数发生器种子。

3

tan()

正切。

3

tanh()

双曲正切。

4

Php中的数学常量

常量名

常量名

常量值

PHP

M_E

e

2.7182818284590452354

4

M_EULER

Euler 常量

0.57721566490153286061

5.2.0

M_LNPI

log_e(pi)

1.14472988584940017414

5.2.0

M_LN2

log_e 2

0.69314718055994530942

4

M_LN10

log_e 10

2.30258509299404568402

4

M_LOG2E

log_2 e

1.4426950408889634074

4

M_LOG10E

log_10 e

0.43429448190325182765

4

M_PI

Pi

3.14159265358979323846

3

M_PI_2

pi/2

1.57079632679489661923

4

M_PI_4

pi/4

0.78539816339744830962

4

M_1_PI

1/pi

0.31830988618379067154

4

M_2_PI

2/pi

0.63661977236758134308

4

M_SQRTPI

sqrt(pi)

1.77245385090551602729

5.2.0

M_2_SQRTPI

2/sqrt(pi)

1.12837916709551257390

4

M_SQRT1_2

1/sqrt(2)

0.70710678118654752440

4

M_SQRT2

sqrt(2)

1.41421356237309504880

4

M_SQRT3

sqrt(3)

1.73205080756887729352

5.2.0

 

转载于:https://my.oschina.net/hunk0503/blog/742672

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值