




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、生物信息学数据库设计,第三章 PHP语言,2,学习内容,PHP基础 PHP基本数据类型 PHP条件与循环 PHP字符串与正则表达式 PHP数组 PHP函数 使用PHP语言操纵MySQL数据库,一 PHP基础,1.1 PHP的概念 PHP是PHP: Hypertext Preprocessor(超文本预处理器)的字母缩写,是一种跨平台的开放源代码的服务器端嵌入式脚本语言。 与HTML不同的是,PHP代码是运行在服务端的,然后把结果返还到客户端来。使用 PHP 的一大好处是它对于初学者来说极其简单,可以很快的入门,只需几个小时就可以自己写一些简单的脚本,同时也给专业的程序员提供了各种高级的特性。
2、尽管 PHP 的开发是以服务端脚本为目的,但事实上其功能远不局限与此。有了PHP,我们可以轻松地进行Web开发,轻松的制作动态网 站、新闻系统等;轻松的实现对文件及文件夹的操作;轻松地进行电子商务的开发、数据的加密;与数据库相关联等等。,3,1.2 PHP动态网页概述 PHP动态网页就是混合使用PHP和HTML编写的Web页面。当访问者通过客户端浏览器发出PHP页请求时,服务端会首先对页面中的PHP代码进行处理,然后把处理后的结果连同HTML内容一起传送到客户端浏览器。 1. PHP动态网页的内容 HTML标记;CSS样式定义;客户端脚本;PHP定界符;PHP代码。 2. PHP动态网页的访问
3、方式 PHP动态网页过输入“http:/”开头的虚拟路径来访问。通过虚拟路径访问PHP动态网页时,首先通过Apache服务器将PHP代码转发给PHP语言引擎进行处理,然后将执行结果连同HTML代码一起发送到客户端浏览器。,4,1.3 PHP的特点 PHP自产生以来一直都在发展中应用、在应用中发展,这是因为PHP不仅有着其它同类脚本所共有的功能,更有它自身的特色。 完全免费 代码完全开放 语法结构简单 功能强大 强大的数据库支持 代码执行效率高,5,PHP 的特点及其与其它语言的比较,6,1.4相关术语 (1)什么是PHP?略 (2)什么是PHPer? PHP programmer,指编写PHP
4、的程序员。 (3)什么是类? 类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。 (4)什么是对象? 对象就是类存在于内存中的实例,通过对类进行实例化,就能得到对应的对象。,7,(5)什么是函数? 函数是一段相对独立的代码,不同的语言有不同的定义方式。在PHP中,函数就是有效的PHP代码的集合。在设计复杂程序时,可以把程序分为几个函数,不同的函数完成不同的功能。其优点在于各部分充分独立,不仅
5、可以使程序易读、易维护,还可以对代码进行复用。 (6)什么是Session? Session用中文来解释就是会话期。一个会话期开始于用户输入一个站点的网址时,结束于离开这个站点时。PHP使用Session函数来创建和管理会话期内“$_SESSION”中的变量。,8,(7)什么是Cookie? Cookie是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。在PHP中可以用 setcookie()函数来设置Cookie。Cookie是HTTP标头的一部分,因此setcookie()函数必须在其他信息被输出到浏览器前调用,这和对header()和SESSION函数的限制类似。可以使用输出缓冲
6、函数来延迟脚本的输出,直到按需要设置好了所有的Cookie或者其他HTTP标头。 (8)什么是变量? PHP 中的变量用一个美元符号后面跟变量名来表示,数据存储的内存地址。在PHP中变量名是区分大小写的。,9,(9)什么是常量? 常量,即不可变的数值或数据项。常量的值通常是在程序运行前定义的,在整个程序运行的过程中,其值是不会改变得。常量默认为大小写敏感。按照惯例常量标识符总是大写的。 (10)什么是引用? 在PHP中引用就是用不同的名字访问同一个变量内容。变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。 (11)什么是序列化? 序列化就是将对象的状态信息转换为可以存储、传输的数据
7、的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。再次使用时,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。序列化只保存了对象的成员数据而不包话方法。,10,(12)什么是构造函数? 构造函数是类中的一个特殊函数,当使用new操作符创建一个类的实例时,构造函数将会自动调用。在PHP5以前的版本中,当函数与类同名时,这个函数将成为构造函数。PHP5通过定义“_construct”函数来建立构造函数。如果一个类没有构造函数,则调用基类的构造函数,如果有j就调用当前类构造函数。 (13)什么是析构函数? PHP5引入了析构函数的概念,通过定义“_destruct”函数来建
8、立析构函数。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 专业术语的记忆有助手对新语言的学习,特别在遇到阅读技术文档时,能理解文档里大量的专业术语,不仅能加快学习的进度,也能更准确的理解原文的意思。可以少走很多弯路。,11,1.5 PHP 常用开发工具,1. EditPlus 简单阐述:速度快,支持多种语言的语法加亮,有project概念,但并不好用。无SCC(Source Code Control,源代码控制)集成,但仍是个优秀的编辑器。,12,2. PHPEdit 简单阐述:一个优秀的IDE. 调试功能丰富,项目管理功能丰富,带有SCC, 项目管理由一个Plugin
9、, 集成有Grep,帮助文档工具。现在最新的版本安装包大小30M左右,安装时候只需要到其官网免费注册一下就可以获得一个月的试用期。,13,3 DreamWeaver 简单阐述:作为网页三剑客之一的DreamWeaver,在网站的设计与开发上简单易学,容易上手, 这里也就不再赘述。,14,1.6 创建PHP代码块,1.6.1PHP定界符 1.6.2 编写PHP注释 C+风格的单行注释“/” UNIX Shell风格的单行注释“#” C风格的多行注释“/*/”,15,1.6.3 PHP与HTML混合编码 PHP语句在语法上是完全独立的单元,但也可以使一个语句跨越两个PHP代码块,并在这两个代码块之
10、间包含HTML代码或其他非PHP代码,此时PHP将直接输出上一个结束标记与下一个开始标记之间的任何非PHP代码。当需要输出大量HTML内容时,退出PHP解析模式比使用echo()、print()或此类函数输出这些内容更为有效。,16,代码演示 commments Examples ,17,在PHP输出HTML可以使用echo()或print()来实现,代码如下所示。 ; /使用echo()函数带有括号的例子 echo (这是echo()函数带有括号的例子“); /使用print()函数输出数据 print 这是print()函数输出的结果; /print()函数带有括号的例子 print(这是
11、print()函数带有括号的例子); ?,18,使用显示函数输出HTML,使用显示函数输出带有HTML格式的内容,代码如清单所示。 清单 显示函数输出带有HTML格式的内容 输出带有HTML格式的测试字符串; $str3 = 输出带有HTML格式的测试字符串; echo $str1; echo ; echo $str2; print ; print $str3; ?,19,使用开始符、结束符嵌套HTML,使用开始符、结束符输出HTML,演示代码如下所示。 测试的变量值等于1。 测试的变量值不等于1。 /将此段代码改成写纯PHP语言 这种方法插入HTML比较简单,不用顾虑单引号和双引号嵌套的问题
12、。其优点在于,不容易产生错误,适用于在PHP里插入大段的HTML代码,特别适用于过程编程方法。但是后期的代码维护有一定的难度。特别是当HTML语句过长时,在编写程序的逻辑代码时容易产生错误。,20,使用定界符显示HTML,使用定界符输出HTML,演示代码如清单所示。 清单 使用定界符输出HTML的方法 测试字符串 测试字符串 测试字符串 EOD; echo $str; /为定界符定义使用的变量 $name = 爱因斯坦; $dicta = 想象力比知识更重要,因为知识是有限的,而想象力概括着世界上的一切,推动着进步,并且是知识进化的源泉。; $size = 5; echo $name说:“$d
13、icta” EOT; ?,21,二 PHP基本数据类型,类型是指变量的类型。不同类型的变量存储的值的大小和形式都不一样。而变量的类型通常不是由程序员设定的,是由PHP根据该变量使用的上下文在运行时决定的。 PHP 支持8种原始类型。4种标量类型:boolean(布尔型)、integer(整型)、float(浮点型,也作“double”)、string(字符串);两种复合类型:array(数组)、object(对象);两种特殊类型:resource(资源)、NULL。,22,2.1 PHP的变量命名,PHP的变量属于松散的数据类型,具体使用时应注意以下几点: 变量名要以“$”开头,且区分大小写;
14、 变量不必要预先定义或声明; 变量在使用时编译器可动态进行类型指定和转换; 变量如果未赋值而直接使用,变量值将被视为空; 提示:最好使用相同的变量命名风格,以免在团队合作或自己查找错误的时候因变量大小的问题,浪费许多无谓的时间,那就得不偿失了。变量之间若要转换类型,当然是很自由的,但浮点数转成整数就有点牵强了,不过可以将浮点数转成字符串,也是很好处理的。,23,正确和错误的命名 $item $Item $myVariable $this_Variable $this-Variable $_Variable $_Variable,24,2.2 运算符与表达式,2.2.1 算术运算符 算术运算符包
15、括加号()、减号()、乘号(*)、除号(/)和取 模运算符(%),分别用于执行加、减、乘、除和求余数运算。其中“”除 了作为减号外,也可以作为一元运算符(负号)使用,即对一个数取相反 数;除号(“/”)总是返回浮点数。当被除数$a为负值时,取模$a % $b的 结果也是负值。 2.2.2 赋值运算符 赋值运算符“=”的作用是把右边表达式的值赋给左边的运算数。赋值运 算表达式的值就是所赋的值。也就是说,“$a = 3”的值是3。这样,一个赋 值运算表达式也可用在其他表达式中,例如:$a = ($b = 3) + 6; 常用复合赋值运算符 +=$op1 += $op2 $op1 = $op1 +
16、$op2 =$op1 = $op2 $op1 = $op1 $op2 *=$op1 *= $op2 $op1 = $op1 * $op2 /=$op1 /= $op2 $op1 = $op1 / $op2 %=$op1 %= $op2 $op1 = $op1 % $op2 .=$op1 .= $op2 $op1 = $op1 . $op2,25,2.2.3 递增/递减运算符 +(递增) +$op(前加)首先在$op的值上加1,然后返回$op $op+(后加)首先返回$op,然后在$op的值上加1 (递减) $op(前减)首先在$op的值上减1,然后返回$op $op(后减)首先返回$op,然后
17、将$op的值减1 递增/递减运算符对布尔值没有影响。递减NULL值也没有效果, 递增NULL的结果是1。,26,2.2.4 字符串运算符 连接运算符(“.”),它返回两个操作数连接后的字符串; 连接赋值运算符(“.=”),它将右边操作数附加到左边的操作数之后。 2.2.5 位运算符 位运算符允许对整型数中指定的位进行置位,即对二进制位从低位到 高位对齐后进行运算。执行位运算时会将操作数转换为二进制整数,然后 按位进行相应的运算,运算的结果以十进制整数表示。如果两个运算数都 是字符串,则位运算符将对字符的ASCII值进行操作。 ,29,2.2.8 逻辑运算符 逻辑运算符用于连接布尔表达式并构成逻
18、辑表达式,逻辑表达式的 值为布尔值true或false。在PHP语言中,逻辑运算符包括逻辑与、 逻辑或、逻辑异或和逻辑非。 and(逻辑与)$a and $b 若$a和$b均为true,则为true or(逻辑或)$a or $b若$a或$b任一为true,则为true xor(逻辑异或)$a xor $b 若$a或$b任一为true但不同时为true,则为true !(逻辑非)! $a 若$a为true,则为false )将构成一个语句。最基本的表达 式形式是常量和变量,稍微复杂的表达式是函数。在 PHP中,表达式可以说是无处不在的。除了常见的算术 表达式外,还有各种各样的表达式。 一个常用
19、的表达式类型是比较表达式,这些表达式的 值为false或true。PHP支持各种比较运算符,通过这些 运算符构成的比较表达式经常用在条件判断语句中。通 过逻辑运算符连接比较表达式可以构成逻辑表达式,用 来表示更为复杂的条件。,31,2.4.10 运算符优先级,32,2.2. 整型数 整型数是集合Z = ., 2, 1, 0, 1, 2, . 中的一个数。 整型数包括正整数、负整数和零。一个整型数可用十进制, 十六进制或八进制符号表示,前面可以加上可选的符号( 或+)。若用八进制符号,则必须在数字前加上0;若用十六 进制符号,则必须在数字前加上0 x。整型数的字长和平 台有关。在32位操作系统中
20、,整型数的取值范围是 2 147 483 648+2 147 483 647。若给定的一个数超出了 整型数的范围,则将被解释为浮点数;当运算结果超出了整 型数范围时,也会返回浮点数。 PHP不支持无符号整数。,33,代码演示 Basic Math: +=: -=: *=: /=: Increment: Decrement: ,34,2.3 浮点数,浮点数也称为双精度数或实数,其取值范围和精度远远大于 整型数。在32位操作系统中,浮点数的取值范围为1.7E308 1.7E+308(即1.7103081.710308)。浮点数可以用小 数形式或科学计数法表示,在科学计数法中用E或e表示以10为 底
21、的幂。 以下给出浮点数的例子。 ,35,代码演示 Floating point: Round: Ceiling: Floor: ,36,2.4 布尔型(boolean),布尔型也就是逻辑型,其值非真即假,用于条件表达式和逻辑表达式中,用以控制程序流程。这种类型是从PHP4种才开始存在的。通常 1 即为 true,0 为 false。 要将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个 boolean 参数时,该值会被自动转换。,37,代码演示 $bool1: $bool2: $var1
22、 is set: $var2 is set: $var3 is set: ,38,2.5 变量类型转换,在有些情况下,需要对整型数值进行强制类型转换,或者根据上下文自动转换。为了保证程序的正常运行,需要对转换后的类型加以确认。 当整型变量溢出时,变量类型会自动转换成 float也就是浮点型。如果给定的一个数或执行运算得出的结果,超出了整型的范围,就称为溢出。在出现溢出后,PHP会自动转换类型来保证数据的正确。,39,类型转换,1. 强制类型转换 ( type ) value 2. 整型转换 3. 字符串转换 4. 布尔转换 5. 测试数据类型 使用gettype()函数来测试一个值的数据类型:
23、 string gettype ( mixed var ),40,代码演示 ; echo gettype($var2); echo ; settype($var2, string); echo gettype($var2); echo ; $var3 = (int) $var1; echo gettype($var3); echo ; ?,41,2.6 变量与常量,2.6.1检查变量或对象是否属于某种数据类型。 is_int()检查变量是否为整型;is_float()检查变量是否为浮点型;is_numeric()检查变量是否为数值型;is_string()检查变量是否为字符串;is_bool(
24、)检查变量是否为布尔型;is_array() 检查是否为数组;is_object()检查变量是否为对象。 使用gettype()函数测试一个变量的数据类型。 使用var_dump()函数显示变量的相关信息: void var_dump ( mixed expression , mixed expression , . ) 使用print_r()函数显示关于变量的易于理解的信息: bool print_r ( mixed expression , bool return ),42,2.6.2 检查变量是否设置 empty()函数检查一个变量是否为空: bool empty ( mixed var
25、 ) 若参数var是非空或非零的值,则empty()返回false。空字符串 (“”)、0、“0”、NULL、false、array()、var $var; 以及没有任何 属性的对象都将被认为是空的,若参数var为空,则empty()返回true。 isset()函数检测变量是否设置: bool isset ( mixed var , mixed var , . ) 若参数var存在则返回true,否则返回false。isset()函数只能用于 变量,因为传递任何其他参数都将造成解析错误。 若使用isset()测试一个被设置成NULL的变量,将返回false。同 时要注意,一个NULL字节(0
26、)并不等同于PHP的NULL常数。,43,2.6.3 可变变量与变量的引用 1. 可变变量 若一个变量获取一个普通变量的值作为变量名,则该变量就称 为可变变量。在某些情况下,使用可变变量是很方便的,由此可以 动态地设置和使用一个变量的变量名。例如: $a = hello ; $a = world ; echo $a $hello ; 2. 变量的引用 在PHP中,通过的引用可以用两个变量来指向同一个内容。若 要引用一个变量,可在该变量名前面加一个,44,2.6.4 使用常量 1. 自定义常量 在PHP语言中,可以用define()函数来定义常量。语法如下: bool define ( stri
27、ng name, mixed value , bool case_insensitive ) 其中name指定常量的名称,常量名与其他任何PHP标识符遵循同样的 命名规则,合法的常量名以字母和下划线开始,后面跟着任何字母、数字 或下划线;value指定常量的值;参数bool case_insensitive指定常量名称是 否区分大小写,默认值为true,即区分大小写。 2. 预定义常量 _LINE_返回文件中的当前行号。 _FILE_返回文件的完整路径和文件名。 _FUNCTION_返回函数名称。 _CLASS_返回类的名称。 _METHOD_返回该方法被定义时的名字(区分大小写)。 PHP_
28、VERSION返回PHP的版本号。 PHP_OS返回执行PHP解析器的操作系统名称。,45,代码演示 ; MAX_WIDTH += 1; echo MAX_WIDTH; ?,46,作业,制作网站,使用HTML和PHP,在前两次的基础上进行完善,必须有5个以上网页,包含变量和常量内容。,47,三 条件与循环,3.1 选择语句 1. if语句 if ( expr ) statements if ( expr ) statements else elsestatements if ( expr1 ) statements elseif ( expr2 ) elseifstatements else
29、elsestatements,48,If语句 ,49,Elseif例句 $b) echo a is larger than b; elseif ($a = $b) echo a equals b; else echo a is smaller than b; ?,50,2. switch语句 switch ( expr ) case expr1: statements1 ; break ; case expr2: statements2 ; break ; . . . default: defaultstatements ; break ; ,51,3.2 循环语句,1. while语句 wh
30、ile语句根据指定的条件将一组语句执行零遍或若干遍: while ( expr ) statements 2. do-while语句 do-while语句根据指定的条件将一组语句执行一遍或若干遍: do statements while ( expr ); 3. for语句 for语句的语法如下: for ( expr1; expr2; expr3 ) statements,52,3 .3 跳转语句,1. break语句 break语句结束当前for、foreach、while、do-while或 switch语句的执行,在该语句可以添加一个可选的数字 参数,以决定跳出几重循环。 2. con
31、tinue语句 continue语句用在各种循环结构中,用来跳过本次循 环中剩余的代码并在条件求值为真时开始执行下一次循 环。在PHP中,continue也可以用在switch语句中。在 continue语句中,可以使用一个可选的数字参数,以决 定跳过几重循环到循环结尾。,53,3.4包含文件语句,1. include语句 include filepath ; include ( filepath ) ; 2. include_once语句 include_once语句功能与include语句类似,惟一的区别在于:如果该文件中 的代码已经被包含了,则不会再次包含。如同此语句名称暗示的那样,只会
32、包含 一次,require_once()返回值与include()相同。如果文件已被包含,则返回true。 3. require语句 require filename require ( filename ) require语句与include语句功能类似,惟一区别在于:如果找不到文件,则 include语句产生一个警告,而require语句则导致一个致命错误。如果想在丢失 文件时停止处理页面,则应该使用require语句。 4. require_once语句 require_once语句用于在脚本执行期间包含并运行指定文件,其功能与 require语句类似,所不同的是,如果该文件中的代码已经
33、被包含了,则不会再 次包含。,54,PHP的文件引用 下面我们先建立一个名为“4-4.php”的文件,输入如下代码: 1: 2: 3: 4: PHP文件的引用 5: 6: 7: ; 9: include (include.msp); 10: /引用同目录下名为“include.msp”的php文件 11: ? 12: 13: ,55,然后我们再建立一个名为“include.msp”的文件,其代码如下: ,56,四 字符串与正则表达式,4.1 字符串处理 4.2 正则表达式,57,4.1 字符串处理,4.1.1 字符串的输出 print()函数输出一个字符串: int print ( strin
34、g arg ) sprintf()函数返回一个格式化的字符串: string sprintf ( string format , mixed args , mixed . ) 4.1.2 大小写转换 strtolower()函数把一个字符串中的所有字母都转换为小写形式: string strtolower ( string str ) strtoupper()函数把一个字符串中的所有字母都转换为大写形式: string strtoupper ( string str ) ucfirst()函数把一个字符串中的首字母转换为大写形式: string ucfirst ( string str ) u
35、cword()函数把一个字符串中所有单词的首字母都转换为大写形式: string ucwords ( string str ),58,4.1.3 从字符串中删除空格 trim()函数去除字符串开始位置和结束位置的空格或其他字符: string trim ( string str , string charlist ) ltrim()函数去除字符串左边的空格或其他字符并返回处理后的字符串: string ltrim ( string str , string charlist ) rtrim()函数去除字符串右边的空格或其他字符并返回处理后的字符串: string rtrim ( string
36、str , string charlist ),59,4.1.4 HTML文本格式化 nl2br()函数把字符串中的所有换行符(“n”)转换为HTML换行标记并返回经过处理的字符串: string nl2br ( string str ) htmlspecialchars()函数把字符串中的一些特殊字符替换为HTML文本实体并返回经过处理的字符串: string htmlspecialchars ( string str , int quote_style , string charset ) htmlentities()函数把字符串中的一些HTML标签转换为HTML实体并返回经过处理的字符串
37、: string htmlentities ( string str , int quote_style , string charset ) strip_tags()函数从字符串中去除所有PHP和HTML标记并返回经过处理的字符串: string strip_tags ( string str , string allowable_tags ),60,4.1.5 添加或去除反斜线 addslashes()函数使用反斜线引用字符串: string addslashes ( string str ) stripslashes()函数去除字符串中的反斜线: string stripslashes
38、( string str ) 4.1.6 字符串的连接与分割 implode()函数将数组元素连接成一个字符串并返回该字符串: string implode ( string glue, array pieces ) explode()函数使用一个字符串分割另一个字符串: array explode ( string separator, string str , int limit ) strtok()函数把一个字符串按照另一个字符串的值分割成若干个字符串: string strtok ( string str, string token ),61,4.1.7 查找字符串 strpos()
39、函数从一个字符串中查找另一个字符串首次出现的位置: int strpos ( string haystack, mixed needle , int offset ) stripos()函数与strpos()功能基本相同,只是不区分大小写: int stripos ( string haystack, mixed needle , int offset ) strrpos() 函数在一个字符串中查找另一个字符串的最后一次出现: int strrpos ( string haystack, mixed needle , int offset ) 4.1.8 替换字符串 str_replace()
40、函数在一个字符串中查找一个子串的所有出现并使用新字符串替换该子串: mixed str_replace ( mixed search, mixed replace, mixed subject , int $part = substr($str, 1, 5); echo $part, ; $part = substr($str, 0, 7); echo $part, ; echo $part, ; echo $str4 = , $str4, ; echo $str10 = , $str10, ; ?,64,代码演示2 , strtolower($str), ; $str =“Database
41、video tutorials.; echo ucfirst($str), ; $str = cao peng video tutorials.; $str_caps = ucwords($str); echo $str_caps, ; ?,65,代码演示3 , $str5, ; echo $str6 (strlen is , strlen($str6).):, $str6, ; ?,66,代码演示4 ; echo $newstr, “; ?,67,代码演示5 ; $part = substr($str, 1, 5); echo $part, ; $part = substr($str, 0,
42、 7); echo $part, ; echo $part, ; echo $str4 = , $str4, ; echo $str10 = , $str10, ; ?,68,4.2 正则表达式应用,4.2.1 正则表达式概述 正则表达式是从左向右去匹配目标字符串的一组模式,它由两种基本的字符类型组成:普通字符和元字符。普通字符也称为原义字符,这些字符在模式中表示它们自身并匹配目标中相应的字符。如果使用一个不包含任何元字符的正则表达式,则只能执行纯文本搜索。正是元字符才使正则表达式具有强大的字符串处理能力。 在PHP语言中,有两种类型的正则表达式,即Perl兼容正则表达式和POSIX扩展正则表
43、达式,它们的基本结构相同,但语法格式稍微有些区别。Perl兼容正则表达式中所使用的模式与Perl类似,表达式应被包含在定界符中,通常使用正斜线(/)作为定界符。任何不是字母、数字或反斜线()的字符都可以作为定界符。如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。POSIX扩展正则表达式则不需要定界符。,69,4.2.2 编写正则表达式 反斜线():这是一个通用转义符 音调符号()有以下两种使用方法: 若用在方括号之外,则表示匹配目标字符串的开头。 若用在方括号之内,则表示不接受该字符集合。 美元符号($)。表示匹配目标字符串的结尾。 句点(.)。在默认情况下,匹配除了换行符(n
44、)以外的任意一个字符。 竖线(|)表示多中选一。 圆括号(())用于定义一个子模式。red以及king,并被计为1、2和3。 花括号()。用于定义一个数量限定符。 问号(?)表示匹配前面的子模式0次或1次,等价于0,1。 星号(*)表示匹配前面的子模式0次或多次,等价于“0,”。 加号(+)表示匹配1个或多个数量限定符,等价于1,。 方括号()。用于定义一个字符类。 连字符(-)用在字符类中,指出字符的范围。,70,4.2.3 正则表达式搜索 preg_match()函数执行正则表达式搜索: int preg_match ( string pattern, string subject , a
45、rray matches , int flags ) preg_match_all()函数执行全局正则表达式搜索: int preg_match_all ( string pattern, string subject, array matches , int flags ) ereg()函数执行正则表达式搜索: bool ereg ( string pattern, string string , array regs ) eregi()函数以不区分大小写方式执行正则表达式搜索: bool eregi ( string pattern, string string , array regs
46、),71,4.2.4 正则表达式替换 preg_replace()函数执行正则表达式的搜索和替换: mixed preg_replace ( mixed pattern, mixed replacement, mixed subject , int limit ) ereg_replace()函数用于替换正则表达式: string ereg_replace ( string pattern, string replacement, string str ) 4.2.5 用正则表达式分割字符串 preg_split()函数。函数用正则表达式分割字符串: array preg_split ( st
47、ring pattern, string subject , int limit , int flags ) split()函数用正则表达式把字符串分割到数组中: array split ( string pattern, string str , int limit ),72,在字符串里搜索邮政编码 ; / A true example: if (detect_zipcode(Frederick, MD 21701-3883) echo Test 1: truen; / Another true example: if (detect_zipcode(The zipcode 26623 is
48、 the area in which I grew up.) echo Test 2: truen; / A False example: if (detect_zipcode(The Phone Number is 301-555-1212) echo Test 3: truen; / Another false example: if (detect_zipcode(426969-313109) echo Test 4: truen; echo ; ?/编写搜索中国邮政编码的网页,73,五数组与函数,5.1数组 5.2函数 5.3面向对象编程,74,5.1 数组,数组的概念: 数组是一种复
49、合数据类型,可用于保存一组类型相同或不相同的数据, 并把一组值映射为键。键也称为数组的索引,它可以是整型数或字符串, 相应的数组分别称为枚举数组或关联数组。键可以有一个或多个,相应的 数组分别称为一组数组或多维数组。 3.1.1 创建数组 1. 用array()创建数组 $array_name = array( key = value , . . . ) ; 其中参数key表示键名,可以是整型数或字符串;value表示与键对应的 值,可以是任何类型的值(包括数组)。array()语言结构返回根据参数建 立的数组。 2. 用方括号语法新建或修改数组 $arr_namekey = value ;
50、也可以省略键名: $arr_name = value ; 其中key可以是整型数或字符串;value可以是任何值。,75,数组就像是值的列表,其中每个值可以是字符串或数字,甚至是另一个 数组。 基本数组结构: $MY_ARRAY0=vare1; $MY_ARRAY1=vare2; $MY_ARRAY2=vare3; etc. 其他数组结构: $SOME_GUYbirthday=1975-01-05; $SOME_GUYage=30; $SOME_GUYheight=511; etc.,76,创建Array $SOME_GUY=Array(); $SOME_GUY=Array(1975-01-0
51、5,30,511); $SOME_GUY0=1975-01-05; $SOME_GUY1=30; $SOME_GUY2=511; OR $SOME_GUYbirthday=1975-01-05; $SOME_GUYage=30; $SOME_GUYheight=511;,77,代码示例 ; print_r($sum_array); print ; print .$sum_array44; ?,78,多维数组 Mike,address=Oakville, Ontario, Canada,age=30); $user2=Array(name=John,address=Worrytown, Okla
52、homa, USA,age=43); $user3=Array(name=Billy,address=Moscow, Russia,age=14); $users=Array( Array(name=Mike,address=Oakville, Ontario, Canada,age=30), Array(name=John,address=Worrytown, Oklahoma, USA,age=43), Array(name=Billy,address=Moscow, Russia,age=14) ); print ;print_r($users);print ;?,79,5.1.2 遍历
53、数组 语法1 foreach (array_expr as $value) statements 语法2 foreach (array_expr as $key = $value) statements 第一种语法格式遍历给定的array_expr数组。在每次循环中当 前元素的值被赋给$value,并且数组内部的指针向前移一步, 因此在下一次循环中将会得到下一元素。第二种语法格式与第 一种语法格式作用相同,但当前元素的键名会在每次循环中赋 给变量$key。,80,代码示例1 $age) echo $position . : . $age . ; ?,81,1000, Brand New PSP=200, Learning PHP+MYSQL = priceless); foreach($prices as $key = $value) if (is_int($value) echo $key . : $ . $value . ; else echo $key . : . $value . ; ?,82,5.1.3 预定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商直播行业主播与品牌合作模式创新趋势及风险控制策略研究报告
- 八年级期中考试家长会课件
- 保育员考试题目及答案
- 安全员b证试题及答案
- 安全试题及答案大题
- 安全生产试题及答案2024
- 生物安全培训课件
- 中国发展简史课件
- 中医推拿科培训课件
- 中国南方区课件
- 中学生高效学习策略体系(学习的逻辑)
- 2023年南京市卫健委所属部分事业单位招聘考试试题及答案
- 沪教版小学六年级语文上学期考前练习试卷-含答案
- 安徽省合肥市2023-2024学年七年级下学期期末考试数学试卷(含答案)
- 04S519小型排水构筑物(含隔油池)图集
- 小学三年级奥数竞赛试题100道及答案(完整版)
- 山东省青岛市2023-2024学年五年级下学期6月期末科学试题
- 2024年大学试题(宗教学)-伊斯兰教文化笔试考试历年典型考题及考点含含答案
- 植筋、界面处理检验批质量验收记录表
- 机床安全 压力机 第 2 部分:机械压力机安全要求
- JJF 1101-2019 环境试验设备温度、湿度参数校准规范
评论
0/150
提交评论