PHP学习笔记超大全.doc_第1页
PHP学习笔记超大全.doc_第2页
PHP学习笔记超大全.doc_第3页
PHP学习笔记超大全.doc_第4页
PHP学习笔记超大全.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PHP笔记函数函数的定义:1.函数是一个被命名的2.独立的代码段3.它执行特定的任务4.并可以给调用它的程序返回一个值函数的优点:1.提高程序的重用性2.提高程序的可维护性3.可以提高软件的开发效率4.提高软件的可靠性5.控制程序的复杂性函数的声明function函数名()函数体function函数名(参数1,参数2,参数) /参数列表,如果有多个就用作,分开函数体function函数名()函数体返回值; function函数名(参数列表)函数体返回值; (1)形参:在声明函数时,声明的参数,参数就是变量,多个参数用,分开(2)实参:调用函数时传给形参的值(数据,也可以是变量)一、函数必须调用才能执行,可以在声明之前调用,也可以在函数声明之后调用二、函数名命名和变量一样,aaa bbb ccc aaaBBBCcc,函数名称一定要有意义三、函数在声明时不能重名四、可以通过向函数传递参数,改变函数的行为五、如果没有返回值则称为过程六、通过使用return语句返回数组七、函数执行到return语句就结束,所以不要再这个语句后写代码,也可以用return结束函数执行函数名的作用:1.调用函数,开始执行函数2.可以向函数中传递数据3.函数名就是返回的值PHP的变量的范围 局部变量:在函数中声明的变量,只能在自己的函数内部使用。全局变量:在函数外声明,在变量声明以后,知道整个脚本结束前都可以使用,包括在函数中和中都可使用。PHP的变量分不出是声明还是使用,在PHP中使用全局变量 要通过global关键字将这个全局变量包含到函数中才能使用到,在global声明之后才是使用全局的变量参数就是局部变量,这个局部变量可以调用时去赋值。PHP的静态变量静态变量只能声明在函数中(类中),不能在全局声明使用static在变量前作用:一个变量可以在同一个函数在多次调用中同用 1.静态变量在静态代码段中保存 2.一个函数多次调用之间共用,但只在第一次调用函数时声明到内存,以后再调用,就不再声明,而直接使用变量函数变量函数:如果一个变量后有括号$var=hello $var(),就将寻找与变量值同名的函数 hello();1.函数的功能-决定是否使用函数2.函数的参数-决定函数怎么调用-有几个参数-传什么类型的值。3.函数的返回值-调用后怎么处理这个函数 PHP提供2000多个函数。都属于系统函数,都可以通过名称直接使用一定要先使用系统函数,如果系统函数没有你想要的功能,再去自己定义函数1.常规函数 bool copy(string source,string dest)2.带有mixed,mixed表示可以传任何类型的数据 bool chown(string filename,mixed user)3.带有&参数的函数,表示引用赋值,这个参数不能传值,只能传一个变量,然后函数将变量的值改变,我们在使用这个变量时,值也是变化的 bool arrort (array &array ,int sort_flags ) 4.默认函数 带有的函数,表示这个参数是可选的,如果你传值了就使用你传的值,如果没有传值则使用默认值 直接在声明函数时,就为参数给初值 可选值和必须值,必须从后向前设置 bool arrort (array &array ,int sort_flags ) 5.带有的参数函数,表示可以传递任意多个参数 Int array_unshift(array &array,mixed var,mixed )6.回调函数 带有callback,就只这个函数时需要我们传一个函数进来(函数名,函数名字串)array array_filter (array input , callback callback ) 1.内部函数:PHP可以在函数内部再声明函数 目的就是在函数的内部调用 就是用来帮助外部函数完成一些子功能2.递归函数:就是在自己内部调用自己的函数名3.重用函数(使用自己定义的函数库): Require:用于静态包含Include:用于动态包含Require_onceInclude_onceInclude(文件名);Include “文件名”;4.一些系统函数的使用:资源=opendir(“目录名”)readdir(资源)数组与数据结构一.数组的概述1.数组的本质:管理和操作一组变量,成批处理2.数组是复合类型3.数组中可以存储任意长度的数据,也可以存储任意类型的数据4.数组就可以完成其他语言数据结构的功能(链表,队列,栈,集合类)二.数组的分类数组中存有多个单元,(单元称为元素)每个元素(下标键和值)单独访问元素的时候,都是通过下标(键)来访问元素1.一位数组,二位数组,三维数组。多维数组(数组的数组,就是在数组中存有其他的数组)2.PHP中有两种数组索引数组:就是下标是顺序整数作为索引关联数组:就是下标是字符串作为索引下标(整数,字符串)只有两种三.数组的多种声明方式1.直接为数组元素a.如果索引下标不给出就,就会从0开始顺序索引b.如果给出索引下标,下一个就会从最大的开始曾1c.如果后面出现前面的下标,如果是赋值就是为前面的元素重新赋值混合声明时,索引和关联不互相影响(不影响索引下标的声明)2.使用array()函数A.默认是索引数组B.如果为关联数组和索引数组指定下标,使用键=值C.多个成员之间使用,分割3.使用其他的函数声明数组的遍历1.使用for语句循环遍历数组 a.其他语言(只有这一种方式)b.PHP中这种方式不是我们首选方式c.数组必须是索引数组,而且下标必须是连续的(索引数组下标还可以不连续,数组还有关联数组)2.使用foreach语句循环遍历数组Foreach(数组变量 as 变量值)/循环体A.循环次数有数组的元素个数决定B.每一次循环都会讲数组中的元素分别赋值给后面的变量Foreach(数组变量 as 下标变量=值变量)3.while() list each() 函数组合循环遍历数组Each()函数 a.需要一个数组作为参数b.返回来的也是一个数组c.返回来的数组是0,1,key,value四个下标(固定的) 0和key下标是当前参数数组元素的键 1和value下标是当前参数数组元素的值D.默认当前元素是第一个元素E.每执行一次后就会将当前元素向后移动F.如果到最后的元素再执行这个函数,则返回falseList()函数a.List()=array() ; 需要讲一个数组赋值给这个函数b.数组中的元素个数,要和list()函数中的参数个数相同c.数组中的每个元素值会啊赋值给list()函数中的每个参数,list()将每个参数转为变量d.list()只能接收索引数组e.按索引的下标的顺序使用数组的内部指针控制函数Next(数组);Prev(数组);Reset(数组);End(数组);Current(数组);Key(数组);预定义数组自动全局变量-超全局数组1.包含了来自web服务器,客户端,运行环境和用户输入的数据2.这些数组比较特别3.全局范围内自动生效,都可以直接使用这些数组4.用户不可以自定义这些数组,但这些数组的操作方式又和我们自己定义的数组操作方式一样5在函数中可以直接使用这些数组.$_GET /经由URL请求提交至脚本的变量$_POST /经由HTTP POST方法提交至脚本的变量$_REQUEST /经由GET,POST和COOKIE机制提交到脚本的变量,因此该数组不值得信任,不去使用(尽量)$_FILES /经由HTTP POST文件上传而提交至脚本,文件上传$_COOLIE /$_SESSION /$_ENV /执行环境提交至脚本的变量$_SERVER /变量由WEB服务器设定的,或直接和当前脚本的执行环境相关联$GLOBALS /只要是当前脚本有效的变量都在这里,数组键名为全局变量的名称数组的相关处理函数一.和数组键/值操作有关的函数1.array()_values(array input)2.arrat()_keys()3.in_array()4.array_key_exists()5.array_flip() - - 交换数组中的键和值6.array_reverse() - - 返回一个单元顺序相反的数组二.统计数组元素的个数和唯一性1.count() sizeof()2.array_count_values() - -统计数组中所有的值出现的次数 3.array_unique() -移除数组中重复的值三.使用回调函数处理数组的函数1.Array_filter() /用回调函数过滤数组中的单元2.array_walk() /数组中的每个成员应用用户函数3.array_map() /将回调函数作用在给定的数组单元上四.数组的排序函数Sort()Rsort()Usort()Assort()Uasort()Ksort()Krsort()Uksort()Natsort()Natcasesort()Array_multisort()1.简单的数组排序Sort() rsort()2.根据键名对数组排序 Ksort() krsort()3.根据元素的值对数组排序 Assort() arsort()4.根据“自然数排序法”对数组排序 Natsort() natcasesort()5.根据用户自定义规则对数组排序 Usort() uasort() uksort()6.多维数组的排序 Array_multisort()五.拆分,合并,分解,接合的数组函数1. array_slice()2.array_splice()3.array_combline()4.array_merge()5.array_intersect()6.ayyay_diff()六.数组与数据结构的函数1.使用数组来实现堆栈Array_push()Array_pop()2.使用队列Arrry_unshift()Ayyay_shift()Unset()七.其他数据操作有关的函数Array_rand()Shuffle()Array_sum()Range()PHP面向对象的程序设计数组和对象:都属于PHP的复合类型(一个变量可以存储多个单元)对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象对象的三大特性:封装,继承,多态面向对象编程(oop )面向对象和面向过程的区别最小单位:函数最小单位:对象什么是对象对象就是东西,一个实体20桌子 20椅子电话:对象中有什么?品牌,颜色,电池,大小。打电话,发信息,听音乐。对象:成员成员属性变量定义对象的外观和状态成员方法函数定义对象的功能文章:标题,作者,来源,访问数添加,修改,删除。 电子商城:用户,购物车,商品,分类,订单,图片,文件对象什么是类分类、类型、自己类型桌子、椅子、电脑在类中定义这个类型的属性和方法声明类实例化对象(创建对象)用对象成员属性:成员方法:在声明类时,类中的成员就是成员属性和成员方法,对这个类创建的对象中的内容,就是你在类中声明的内容类和对象之间的关系并不是面向对象的语法难,最难的就是如何设计出面向对象的程序类的声明1.你要开发的是什么,确定写什么类2.类中的成员一定要属于这个类修饰类的关键字class 类名成员属性:外观、颜色、电池容量、屏幕尺寸。成员方法:打电话,发信息,播放音乐,拍照。在类中声明成员属性时,前面必须有修饰词当不知道使用哪个词时使用var或public,如果知道使用哪一个修饰关词,就不使用var在创建好对象之后再给值类中的成员属性,如果创建多个对象时,每个对象有不同的属性值时,不要直接赋初值一个文件只保存一个类,文件名中包含类名,文件:类名.class.php自动加载标本量:aaaBbbCcc函数:aaaBbbCcc常量:AAABBBCCC类名:AaaBbbCcc一定要有意义类实例化通过类来实例化对象1.使用的是new新建一个对象,加上类名,就是创建那个类的对象$对象引用=new 类名;2.是要有一个new关键字就是创建一个对象,创建一个对象就在内存中分配了一个空间只有对象才在内存有存储空间对象在内存中的分配对象的使用对象中的成员必须通过对象的引用来访问对象-成员属性=新值Echo 对象-成员属性对象-成员方法1.对象中成员的访问(就是在一个对象的内部方法中,去访问对象中其他方法和成员)2.在对象中的方法中都默认有一个$this关键字,这个关键字代表调用方法的对象3.第一人称代词:我构造方法1.是对象创建完成以后,第一个自动调用的方法2.构造方法的定义,方法名是一个固定的在PHP4中和类名相同的方法就是构造方法在PHP5中构造方法使用 魔术方法 _construct()所有类中声明构造方法都使用这个名称优点:在改变类名时,构造方法不用改变魔术方法:在类中写出了某个魔术方法,这个方法对象的功能 就会添加上方法名称都是固定的(都是系统给我们提供好的),没有自己定义的,每一个魔术方法,都是在不同时刻为了完成某一个功能自动调用的方法不同的魔术方法都有不同的调用时机都是 _开头的方法_construct()_destruct()_set()_get()_isset()_unset()_clone()_call()_sleep()_weakup()_toString()_autoload()作用:就是为成员属性初始化析构方法1.当对象被释放之前最后一个“自动“调用的方法使用垃圾回收器(java PHP) 而C+手动的释放作用:关闭一些资源,做一些清理的工作_destruct()封装性:面向对象的三大特性之一1.就是把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节Public protected Private 私有的,用这个关键字修饰的成员,只能在对象内部访问(只有用$this访问),不能在对象外部使用属性可以封装:只要一个变量,需要在多个方法使用,就将这个方法声明为成员属性,可以直接在这个对象中的所有方法中使用成员属性,就相当于这个对象中的全局变量成员属性都会在方法中使用,成员属性值的变化其实在改变方法的执行行为,也就是改变了对象的功能成员属性的值如果不正常,方法执行的功能也就不正常作用:不需要在对象外部改变或读取他的值1.封装再提供一个公有的方法(经过方法对象成员属性进行赋值和取值就可以控制)方法也可以封装作用:1.使用private修饰使其只能在内部使用2.一个类中有100个方法,封装了95个(为另外5个服务的方法),只有5个方法可以使用和封装有关的魔术方法:_set() :是直接设置成员的属性时,自动调用的方法_get():是直接获取成员属性时,自动调用的方法_isset():是直接isset()查看对象中私有属性是否存在时自动调用这个方法_unset():是直接unset()删除对象中私有属性时自动调用的方法继承性:1.他也是面向对象的三大特性之一2.开放性,可扩充性3.增加代码的重用性4.提高了软件的可维护性5.继承就是用子类去“扩展”父类C+属于多继承,同一个类可以有多个父类PHP和JAVA属于单继承,同一个类只能有一个父类不管是多继承还是单继承都可以有多个子类只要你在设计两个类时,有可以共享的成员,就将可以共享的内容拿出来,单独作为一个基类使用父类基类子类派生类作用:一.类继承的应用1.声明一个子类,使用extends关键字去继承(扩展)一个父类2.子类可以从父类继承所有的内容,包括成员属性,成员方法,构造方法。在子类中都可以直接使用3.类之间的层次关系设计好二.访问类型控制虽然子类可以从父类中继承所有内容,但private的成员,只能在本类中使用,子类中也不能使用封装是既可以让自己类的内部可以访问,也让子类可以访问,但类的外部不能使用,只要将private-protected三.子类中重载父类的方法1.子类可以声明和父类相同的方法名,即子类覆盖了父类中同名的方法子类的方法对父类方法的扩展在子类中 调用 父类中被覆盖的方法对象-成员 类:成员父类名:方法名()Parent:方法名()在子类中如果编写构造方法,如果父类中也有构造方法一定要去调用一次父类中被覆盖的那个构造方法 注意:子类中重载的方法,不能低于父类中的访问权限(子类可以放大权限,但不能缩小权限)PHP中常用的关键字Final1.final不能修饰成员属性(类中的常量不是用这个关键字)2.final只能修饰类和方法作用:使用final修饰的类不能被子类继承使用final修饰的方法不能被子类去覆盖用来限制类不被继承,方法不被覆盖就使用finalStatic1.使用static关键字可以修饰成员属性和成员方法,不能修饰类2.用static修饰的成员属性可以被同一个类的所有对象共享3.静态的数据是存在内存中的数据段中(初始化静态段)4.静态的数据是在类被第一次加载时分配到内存中的,以后再用到类时就直接从数据段中获取5.什么是类被加载?只要在程序中使用到这个类(有这个类名出现)注意:静态成员都要使用类名去访问,不用创建对象,不用对象去访问类名:静态成员如果在类中使用静态成员,可以使用self代表类($this)6.静态方法不能访问非静态的成员(在非静态的方法中可以访问静态成员)因为非静态的成员,就必须用对象来访问,访问内部的成员使用$this静态方法 不用使用对象来调用,也就没有对象,$this也就不能代表什么对象,非静态的成员还必须使用对象如果确定一个方法中不使用非静态的成员,则可以将这个方法声明为静态方法(不用创建对象,直接使用类名就可以访问)静态成员:类名:成员,在类内部访问其他成员self:成员Const1.只能修饰成员属性2.类中声明常量属性使用const3.命名的方式和我们以前学习的define是一样的效果4.访问方式和static静态成员属性是一样 (在类外使用 类名:常量 在类内部使用 self:常量)5.常量一定要在声明时就给初值PHP中常用的魔术方法_call()作用:在调用对象中不存在的方法时就会出现系统报错,然后程序退出什么时候自动调用:在调用一个对象中不存在的方法时自动调用处理一些不存在方法的错误调用这个方法需要两个参数:_toString()直接输出对象引用时自动调用,用来快速获取对象的字符串表示的最快捷的方式对象串形化(序列化):将一个对象转化为二进制串(对象是存储在内存)1.将对象长时间存储在数据库或文件中时2.将对象在多个PHP文件中传输时Serialize():参数是一个对象,返回来的就是串行化后的二进制串Unserialize():参数就是对象的而二进制串,返回来就是新生产的对象_sleep():在序列化时自动调用的方法作用:就是讲一个对象部分串行化只要这个方法中返回一个数组,数组中有几个成员属性就序列化几个成员属性,如果不加这个方法,则所有成员都被序列化_weakup():在反序列化时自动调用的方法也是对象重新诞生的一个过程(_construct(),_clone(),_wakeup())_autoload()注意:其他的魔术方法都是在类中添加起作用,只是一个唯一一个不再类中添加的方法只要在页面使用到一个类,只要用到类名就会自动将类名传给这个参数_clone()克隆对象使用clone去处理原来(原来的对象)副本(复制出来的对象)_clone()就是在克隆对象时自动调用的方法只要一个对象一诞生,就要有初始化的动作,和构造方法作用相似在_clone()方法中的$this关键字,代表的是副本$that代表原本关键字抽象类 接口 多态抽象类是一种特殊的类,接口是一种特殊的抽象类,而多态就要使用到抽象类或接口声明抽象类和接口,以及一些需要的技术抽象类什么是抽象方法?定义:如果一个类中的方法,没有方法体的方法就是抽象方法(就是一个方法没有使用而直接使用分号结束)Abstract Function test(); /抽象方法Function test() /有方法体,但方法体位空如果一个方法是抽象方法,就必须用abstract修饰为什么要使用抽象方法?什么是抽象类?1.如果一个类,有一个方法是抽象的者这个类是抽象类2.如果一个类是抽象类,则这个类必须要使用abstract修饰3.抽象类是一种特殊的类,就是因为一个类中有抽象方法,其他不变。也可以在抽象类中声明成员属性,常量,抽象的方法4.抽象类不能实例化对象(不能通过抽象类去创建一个抽象类的对象),一、抽象方法没有方法体,不知道做什么的二、对象中的方法和属性都要通过对象来访问,除常量和静态的变量和方法,而抽象类有不能创建对象,抽象类中的成员都不能直接访问接口接口技术因为在PHP中类是单继承的,如果使用了抽象类,子类实现完抽象类不能再去继承其他的类了。如果既想实现一些规范,又想继承一个其他的类,就要使用接口接口和抽象类的对比1.作用相同,都不能创建对象,都需要子类去实现2.接口的声明和抽象类不一样3.接口被实现的方式不一样4.接口中所用的方法必须是抽象方法,只能声明抽象方法(不用使用abstract修饰)5.接口中的成员属性只能声明常量,不能声明变量6.接口中的成员访问权限都必须是public,抽象类中最低的权限是protected7.使用一个类去实现接口,不是使用extends关键字,而是使用implement这个词如果子类是重写父方法中抽象方法,则使用implements,类接口,抽象类接口implement接口-和接口 extends可以定义一个接口去继承另一个接口可以使用抽象类去实现接口中的部分方法如果想让子类可以创建对象,则必须实现接口中的全部抽象方法一个类可以去实现多个接口(按多个规范去开发子类),使用逗号分隔多个接口名称一个类可以在继承一个类的同时,去实现一个或多个接口(先继承,再实现)使用implements的两个目的:1.可以实现多个接口,而extends只能继承一个父类2.没有使用extends词,还可以去继承一个类,所以两个词可以同时使用声明方式:Interface 接口名作用:要想使用抽象类,就必须使用一个类去继承抽象类,而且要想使用这个子类,也就是让子类可以创建对象,子类必须不能再是抽象类,子类可以重写父类的方法(给抽像方法加上方法体)抽象方法中的方法没有方法体,子类必须实现这个方法(父类中没写具体的实现,但子类必须有这个方法名)就是在定义一些规范,让子类按照这些规范去实现自己的功能目的:就是要将你自己写的程序模块加入到原来写好的程序中去(别人写好的程序,不能等你开发完一个小模块,根据你的小模块向下开发)多态多态是面向对象的三大特性之一“多态”是面向对象设计的重要特征,他展现动态绑定(dynamic binding)的功能,也称为“同名异式“(polymorphisn)。多态的功能可让软件在开发和维护时,达到充分的延伸性(extension)。事实上,多态最直接的定义就是让具有继承关系的不同类对象,可以对相同的成员函数调用、产生不同的反应效果字符串字符串的特点Substr(“string”,2,4);1.其他类型的数据用在字符串处理函数中,会自动将其转化为字符串后,再处理2.可以将字符串视为数组,当作字符集合来看待强大的PHP中内置字符串处理函数1.常用的字符串输出函数Echo()Print()Die()Printf() 格式化字符串Sprint() 返回格式化的字符串%b%c%d%f%o%x2.常用到的字符串格式化函数Ltrim()Rtrim()Trim()空格在字符串中占一位Str_pad()大小写有关的函数Strtolower()Strtoupper()Ucfirst()Ucword()和html标签有关的字符串格式化N12br()Htmllentities()Htmlspecialchars()Stripslashes()Strip_tags()其他的字符串格式化函数Number_format()Strrev()Md5()Md5_file()在PHP中所有字符串处理函数,都不是在原字符串上修改,而是返回一个新格式化后的字符串字符串比较函数Strcmp()Strcasecmp()以上是按字节顺序,一下是按自然数Strnatcmp()正则表达式1.正则表达式就是描述字符串排列模式的一种自定义语法规则2.如果可以使用字符串处理函数完成的任务,就不要使用正则3.有一些复杂的操作,只能使用正则完成正则表达式可以在很多计算机语言中应用4.正则表达式也成为一种模式表达式5.正则表达式就是通过构建具有特定规则的模式,与输入的字符信息比较。再进行分割、匹配、查找、替换等工作/一、正则表达式也是一个字符串二、由具有特殊意义的字符组成的字符串三、具有一定的编写规则也是一种模式四、可看做一种编程语言(是用一些特殊字符按规则编写出一个字符串,然后形成一种模式正则表达式)注意:如果正则表达式不和函数一起使用,则它 就是一个字符串,如果将正则表达式放入到某个函数中使用,才能发挥出正则表达式的作用用到分割函数中,就可以用这个正则去分割字符串用到替换函数中,就可以用这个正则去替换字符串。在PHP中给我们提供了两套正则表达式函数库Perl 兼容正则表达式函数(preg_)POSIX 扩展正则表达式函数(ereg_)这两个函数功能一样,找一个处理字符串效率高的注意:推荐使用Perl兼容正则表达式函数(只学这一种)学习正则表达式时,有两方面需要学习一、正则表达式的模式如何编写语法:1.定界符号/除了字母、数字和反斜线以外的任何字符都可以为定界符号 | | / / ! !没有特殊需要,我们都是用正斜线作为正则表达式的定界符号2.原子 img s .注意:原子是正则表达式的最基本组成单位,而且必须至少要包含一个原子只要正则表达式可以单独使用的字符,就是原子1.所有打印(所有可以在屏幕上输出的字符)和非打印字符(看不到的)2. . * + ? ( 如果所有有意义的字符,想作为原子使用,统统使用”转义字符转义“”转义字符可以将有意义的字符转义成没意义的字符,开可以将没意义的字符转为有意义的字符3.在正则表达式中可以直接使用一些代表范围的原子d:表示任意一个十进制的数字 0-9D:表示任意一个除数字之外的字符 0-9s:表示任意一个空白字符,空格、nrtf nrtfS:表示任意一个非空白 nrtfw:表示任意一个字a-z A-Z 0-9 _ a-zA-Z0-9W:表示任意一个非字,除了a-z A-Z 0-9 _ a-zA-Z0-94.自己定义一个原字表,可以匹配方括号中的任何一个原子a-z5-8表示取反,表示除了原子表中的原子,表示都可以(必须在 内的第一个字符处出现)3.元字符 * ?元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现*:表示前面的原子可以出现0次,1次,或多次 0,+:表示其前面的原子可以出现1次或多次,不能没有最少要有一个 1,?:表示其前面的原子可以出现0次或一次,有只能有一次,要么没有 0,1. :默认情况下,表示除换行符外任意一个字符:直接在一个正则表达式的第一个字符出现,则表达式必须以这个表达死开始$:直接在一个正则表达式的最后一个字符出现,则必须以这个正则表达式结尾|:表示或的关系,它的优先级别是最低的,最后考虑它的功能:用以自己定义前面原子出现的次数m /m表示一个整数,5表示前面的原子出现5次m,n /m和n表示以一个整数,m要小于n,表示前面出现的原子最少m次最多n次包括m次n次m, /表示前面的原子最少出现m次,最多无限():重点一、()作用:是作为大原子使用二、改变优先级,加上括号可以提高优先级别三、作为子模式使用,正则表达式不光对一个字符串匹配一次,全部匹配作为一个大模式,放到数组的第一个元素中,每个小括号是一个子模式到安顺序放到数组的其他元素中四、可以取消子模式,就将他作为大原子或改变优先级使用,在括号中最前面使用”?:”就可以取消这个()表示的子模式五、反向引用,可以在模式中直接将模式取出来,再作为表达式模式的一部分,如果是在正则表达式像替换函数perg_replace函数中,可以将子模式取出,在被替换的字符串中使用 1 取第一个子模式 2取第二个子模式, 5(注意是单引号还是双引号引起来的正则)“1”1$1 $2b:表示一个边界B:表示一个非边界* . + ?优先级高低() (?:) * + ? $ b|元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现4.模式修正符号 I u“/ /模式修正符”1.就是几个字母2.可以一次使用一个,每一个具有一定的意义,也可以连续使用多个3.是对整个正作为表达式调优使用,也可以说十岁正则表达式功能的扩展“/abc/” 只能匹配小写字母 abc“/abc/i” 可以匹配不区分大小写i:表示在和模式匹配时,不区分大小写m:默认情况,将字符串视为一行 $视为多行后任何一行都可以以正则开始或结束s:如果没有使用这个模式修正符号时,元字符中的“.”默认不能表示换行符号,将字符串视为单行x:表示模式中的空白忽略不计e:正则表达式必须使用在perg_replace替换函数中时才可以使用A:Z:U:正则表达式的特点就是比较贪婪 .* .+所有字符都符合这个条件一种是使用模式修正符 U另一种是使用?完成 .*? .+?如果两者方式同时出现,有开启贪婪模式 .*? /U有些语言中不支持模式修正符号 javascript/iu/原子和元字符/模式修正符号 / 为定界符号(有一些语言是不需要这个定界符号)一个URL的正则表达式:$url=”/(https?|ftps?):/(www|mail|news).(./+).(com|net|org)/i”;用在分割的函数中,则使用上上面的正则对字符串进行分割二、学习正则表达式的强大处理函数一个URL的正则表达式:$url=”/(https?|ftps?):/(www|mail|news).(./+).(com|net|org)/i”;用在分割的函数中,则使用上上面的正则对字符串进行分割用在匹配的函数中,则使用上上面的正则对字符串进行匹配用在替换的函数中,则使用上上面的正则对字符串进行替换有了正则,在一些正则处理函数中使用这个正则,则才能对字符串进行分割、匹配、查找、替换等工作和字符串处理函数对比介绍能使用字符串处理函数完成的功能,就不要使用正则表达式处理函数1.字符串的匹配与查找Preg_match()字符串处理函数 strstr() stristr()不区分大小写 strops() substr()Str_replace()Str_ireplace() 不区分大小写1.str_replace(string,string,string)2.str_replace(array,string,string)3.str_replace(array,array,string)Preg_replace() 正则中替换函数1.正常使用 preg_replace(“string”,”string”,”string”)2.在正则中的子模式,可以用到第二个参数中3.在第二个参数中调用函数,需要在模式中使用e模式修正符号4.就是在前两个参数中都使用数组,可以一起将多个模式(正则)同时替换成多个值的形式Explode,按一个字符或字符串去分割Preg_split,按一个正则的模式去分割Implode-jionPHP文件系统处理所有的文件处理都是使用系统函数完成的是基于Linux/Unix系统为模型文件系统处理的作用1.所有的项目都离不开文件2.可以用文件长时间保存数据3.建立缓存,服务器中文件操作文件处理1.文件类型以Linux为模型的,在Windows只能获取file,dir或unknow三种类型在Linux/Unix,block,char,dir,fifo,file,link,unknownblock:块设备文件,磁盘分区,软驱,cd-rom等char:字符设备,I/O以字符为单位,键盘、打印机dir:目录也是文件的一种fifo:file:link:ln sunknownfiletype(“目录或文件名”)is_array()is_int()is_string()is_null()is_bool()is_dir - 判断给定文件名是否是一个目录 is_executable - 判断给定文件名是否可执行 is_file - 判断给定文件名是否为一个正常的文件 is_link - 判断给定文件名是否为一个符号连接 is_readable - 判断给定文件名是否可读 is_uploaded_file - 判断文件是否是通过 HTTP POST 上传的 is_writable - 判断给定的文件名是否可写 is_writeable - is_writable()的别名2.文件的属性File_exists()Filesize()Is_readable()Is_writeable()Filectime()Filemtime()Fileactime()Stat()3.和文件路径相关的函数相对路径:相对于当前目录的上级和下级目录. 当前目录 . 上级目录./php/apache/index.phpPhp/apache/index.phpLogin.php./login.php./images/tpl/logo.gif路径分割符号:Linux/Unix “/”Windows “”DIRECTORY_SEPARATOR 为不同平台,在windows ,在linux /不管是什么操作系统PHP的目录分割符号都支持/(Linux)在PHP和Apache配置文件中如果需要指定目录,也使用/作为目录符号绝对路径:/ 根路径/images/index.php指操纵系统的根指的是存放网站的文档根目录分情况:如果是在服务器中执行路径(通过PHP文件处理函数执行),则“根“指的就是操作系统的跟如果程序是下载到客户端再访问服务器中的文件时,只有通过Apache访问,“根“也就指的是文档根目录basename(url)dirbame(url)pathinfo(info)4.文件的操作相关的函数(创建文件:touch(“文件名”)删除文件 unlink(“文件路径”)移动文件 重命名文件 rename(“当前文件路径”,”目标文件路径”)复制文件 copy(“当前”,”目标”))一定要有PHP执行这个文件的权限和权限设置相关的函数chgrp - 改变文件所属的组chmod - 改变文件模式chown - 改变文件的所有者filegroup - 取得文件的组fileowner - 取得文件的所有者5.文件的打开与关闭(读文件中的内容,向文件中写内容)读取文件中的内容File_get_contents(); /PHP5以上File()Readfile()不足: 全部读取,不能读取部分,也不能指定区域Fopen(URL,mode)Fopen(“”,”r”)r 以只读模式打开文件r+ 写w 以只写的方式打开,如果文件不存在,则创建这个文件,并写入内容,如果文件存在,并原来有内容,则会清除原有文件中所有内容,再写入(打开已有的重要文件)w+ 除了可以写用fwrite,还可以读freada 以只写的方式打开,如果文件不存在,则创建这个文件,并写入内容,如果文件存在,并原来有内容,则不清除原有文件内容,在原有内容的最后写入新内容(追加)a+ 除了可以写用fwrite,还可以读freadb 以二进制模式打开文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论