首页 项目三:PHP中函数的学习-PHP+MySQL开发项目教程课件

项目三:PHP中函数的学习-PHP+MySQL开发项目教程课件

举报
开通vip

项目三:PHP中函数的学习-PHP+MySQL开发项目教程课件项目三:PHP中函数的学习任务一:初步认识PHP中的函数任务描述:函数是PHP最重要的组成部分。如果说前面介绍的变量、表达式、流程控制是PHP的基础的话,那么可以说函数就是PHP的主体。什么是函数呢?简单的说,函数就是为了完成特定功能而作为一个整体存在的代码块。PHP中有大量的库函数,同时也允许用户自定义函数。下面就带领读者来认识一下函数。本节内容包括:什么是函数、函数的参数、函数的返回值、PHP内部函数的使用、PHP加载外部函数、如何自定义函数等。3.1.1什么是函数简单的说,函数是为了完成特定功能,而作为一个整...

项目三:PHP中函数的学习-PHP+MySQL开发项目教程课件
项目三:PHP中函数的学习任务一:初步认识PHP中的函数任务描述:函数是PHP最重要的组成部分。如果说前面介绍的变量、 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式、流程控制是PHP的基础的话,那么可以说函数就是PHP的主体。什么是函数呢?简单的说,函数就是为了完成特定功能而作为一个整体存在的代码块。PHP中有大量的库函数,同时也允许用户自定义函数。下面就带领读者来认识一下函数。本节内容包括:什么是函数、函数的参数、函数的返回值、PHP内部函数的使用、PHP加载外部函数、如何自定义函数等。3.1.1什么是函数简单的说,函数是为了完成特定功能,而作为一个整体存在的代码块。例如,求绝对值函数abs()完成的功能是求一个数的绝对值,而且它也是独立存在的,并不受其他变量或函数的影响。函数采用以下方法来定义。functionf_name($arg){expr;return$retval;}以上代码中f_name为函数名,以名字来区别其他函数。$arg为函数的参数,参数是在函数执行中要传递的值,它跟在函数后面的括号里。如果要求“-3”的绝对值就要用参数来传递“-3”,如abs(-3)。expr为函数执行的语句,$revel为函数的返回值,返回值并不是每个函数都有。返回值指完成函数后返回到主程序中的值。如abs(-3)的返回值为“-3”的绝对值“3”。其中函数名的命名规则与PHP中的变量命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。在PHP3中一个函数在调用之前必须已经被初始化。如果调用一个未被定义的函数,将会导致错误。从PHP4开始,就不再有这种限制,这意味着可以先调用一个并未被定义的函数,然后再去定义函数。但是如果函数的定义是有条件的,那么在这有条件的定义发生前,是不能被调用的。就像下面这两种情况。1.有条件的定义具体内容请参看以下代码:例子3.1运行结果为:图3.1定义函数图示以上为第1种情况,虽然定义函数的条件为真,但是在有条件的定义前,函数是不能被调用的。即如果某条件为真则再去考虑是否去做某件事,如果这条件根本不存在,就不考虑去做这件事,更不用说怎么去做了。这里举一个形象的例子。例如,一个家长叫小孩子去买东西。小孩子如何去买东西可以看作是一个函数。但是小孩也给家长提了条件,如果给1元辛苦费才去买。即只有满足了给1元钱的条件,才去执行买东西这个函数,也才去考虑怎么去买。如果条件根本不存在,那么函数就相当于没有定义,当然也不会执行了。例子3.3函数参数的使用实例".$text."";//打印字符并加入粗体斜体效果}$string="PHP编程是一件很有趣的事情";//定义变量echo$string;//打印变量echo"
";B_I_text($string);//用实际参数调用函数?>运行结果图示:图3.2函数参数的使用实例上例中,先定义了有形式参数的函数。然后定义变量,先显示变量,再通过实际参数调用函数。从这个例子中,读者可以了解到函数的参数是如何传递值到函数体的。在使用函数参数时还应该注意一个问题。函数的参数是有类型限制的,即某一函数的参数可能只对应某一种类型。如果参数的类型与函数要求的类型不一致,就会发生错误,可能会返回用户不希望的结果。如abs()函数的作用是计算一个数的绝对值,所以它的参数只能为整型或者浮点型数。如果用字符或者数组作为函数的参数,则一定会出现用户不希望的结果。另外,有的函数有默认的值的参数。这时的参数就变成了可选参数,即调用该函数时可以不加有默认值的参数。函数将用默认值来替换该参数。下面举一个例子来说明:例子3.4函数有默认值参数的使用实例";//使用颜色参数echo"".$text."";//打印字符并加入粗体斜体效果echo"";}$string="PHP编程是一件很简单的事情";//定义变量echo$string;//打印变量echo"
";B_I_text($string);//调用函数,无$color参数Echo"

";B_i_text($string,"red");//调用函数,加入$color参数?>运行结果:3.1.3函数的返回值functionf_name($arg){expr;return$retval;}即以上代码中的$retval。函数通过return来返回值。函数的返回值可以是数值、字符等变量。下面通过一个实例来说明函数的返回值是如何使用的。例子3.5函数返回值的使用实例保存以上代码,运行结果如图3.4保存以上代码,运行结果如图3.4图3.4函数返回值实例图片另外,函数不能有多个返回值,但是为了返回多个值,可以将数组作为一个函数的返回值,从而实现多个值的返回。下面通过一个实例来说明,函数是如何将一个数组作为其返回值的。3.1.4PHP内部函数PHP为用户提供了丰富的库函数即内部函数,能否熟练的使用PHP的内部函数,是衡量一个PHP程序员合格与否的标准。那么如何使用PHP中的库函数呢?由于内部函数是集成在PHP解释器中的,所以它不用被定义,可以直接使用。使用时只是要注意函数的参数类型、调用方法、返回值及格式即可。相对于用户自定义函数来说,PHP的内部函数使用更简单。一是因为它不用定义;二是不用担心函数体本身会出错。如果在使用库函数时返回了不希望出现的结果,那么不要怀疑是系统函数有问题。因为这些函数都是经过了反复的实践证明的,是绝对正确无误的。下面就通过例子,来说明在PHP中如何使用库函数。调用常用的 数学 数学高考答题卡模板高考数学答题卡模板三年级数学混合运算测试卷数学作业设计案例新人教版八年级上数学教学计划 函数。例子3.7PHP库函数的使用实例2运行结果图示3.1.5PHP加载外部函数PHP有很多库函数,还有一些函数需要和特定的PHP扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用图像函数imagecreatetruecolor(),就需要在编译PHP的时候加上对GD库的支持。具体作法就是修改php.ini文件。找到这一行:;extension=php_gd.dll把这一行行首的“;”去掉,这样PHP解释器在启动时就会加载GD库函数,然后就可以像使用内部库函数一样使用GD库函数。对其他外部函数的使用也是如此,要使用相应的函数,就要先加载相应的模块。有很多核心函数已包含在每个版本的PHP中,如字符串和变量函数等。调用Phpinfo()函数,可以了解到PHP加载了哪些扩展库。同时还应该注意,很多扩展库默认就是有效的。下面通过一个实例,来说明如何加载并使用外部函数。因为要使用GD库函数,所以第1步修改php.ini文件,去掉“;extension=php_gd.dll”这一行行首的“;”。另外,在这个例子中要用到wingdings.ttf字体,所以要把wingdings.ttf这个字体文件复制到PHP文件的同一个目录下。该实例要实现的功能是创建一个图像文件,并在图像上画出一些图形。具体代码如下:例子3.8大家可以自己在PHP环境中运行,看一下效果。3.1.6自定义函数在实际进行PHP编程时,由于要面对的情况可能十分复杂,仅仅依靠PHP内置的库函数,有时往往不能实现用户所要达到的目的。这时就要用户自己构造函数来解决实际问题。PHP允许用户使用自定义函数。那么,自定义函数应该怎么用呢?这一节就来解决如何使用自定义函数及函数的动态调用、函数的递归等问题。图3.6函数自定义图示可以看到在代码的第7行就是我们自己定义的函数,函数为求两个数的最小公倍数。通过上面的例子大家可以了解到在PHP中是如何自定义函数的,只要掌握了方法,自定义函数是非常简单的一件事情。2.使用自定义函数自定义函数在完成定义后,就可以使用了。使用的方法也相当简单,就像使用PHP库函数一样。代码如下:functionfunctionname();函数名后面加上括号,里面带上适当的参数就行了。以如何自定义函数中的例子说明,例子中在输出结果的时echomy_f()中的my_f()就是调用的代码第7行中自定义的函数,同样的调用函数也是很简单,读者很容易掌握。3.函数的动态调用由于PHP支持可变化的函数概念。所以如果在一个变量的名称后面加上一对圆括号“()”,那么PHP将去寻找与这个变量名字相同的函数。无论这个变量的数值是什么,函数都会被执行。这个过程就实现了函数的动态调用。为了形象说明函数的动态调用这个问题,下面通过实例来介绍。例子3.10函数的动态调用实例";//以12号字体输出文字echo$text;echo"";}functionmy_f_2($text)//定义函数2{echo"";//以20号字体输出文字echo"";//给文字加上下划线效果echo$text;echo"";echo"";}$test="my_f_1";$test("ILIKEPHP!");//动态调用my_f_1()echo"

";$test="my_f_2";$test("用PHP编程,其实很简单!");//动态调用my_f_2()?>运行图示:图3.7函数的动态调用图示以上代码先定义了两个函数,然后把函数名称赋值为变量。变量名后加上括号,PHP就会去寻找同名的函数my_f_1,找到后则运行,从而实现了函数的动态调用。调用my_f_2的过程与之类似。4.函数的递归这一小节来介绍PHP函数的递归。那么什么是递归呢?其实递归就像读者都听过的一个歌谣那样:从前有座山,山里有座庙,庙里有个老和尚和一个小和尚。老和尚给小和尚讲故事,故事里说从前有座山,山里有座庙……就像这样无限循环。回过头来继续说递归,递归简单的说就是函数自身调用自身。有时通过函数的递归来处理问题是十分有效的。如求斐波纳契数列第N项的值,如果采用传统方法效率很低。但如果使用函数的递归,解决起来就会容易的多。下面就通过例子来说明函数的递归问题。在列出具体代码前,先来了解一下斐波纳契数列的特点。斐波纳契数列即“兔子生兔子的问题”:有一个人把一对兔子放在四面封闭的地方。假定每个月一对兔子生下另外一对。而这新的一对在二个月后就生下另外一对。这样一年后他会有多少对兔子?这里对这个数列作一改动,设第一项与第二项为1。结果就是像这样的一组数列:1,1,2,3,5,8,13,21,34,55,89,144……即某一项为它前面两项之和。在了解了数列的特点后,下面就通过实际使用函数的递归,来解决这一问题。图3.8函数递归图示以上代码中当参数为1或2的情况很容易理解,直接返回1即可。除此以外的情况直接返回了和数组定义完全相同的公式:某一项为其前两项之和,从而实现了函数的递归。可以看出使用函数的递归解决此类问题相对于用迭代法来说是简单的、有效的。另外,在使用函数递归时要注意以下两个问题:在递归中要有使递归中止的代码,不能使递归陷入无限循环之中。同时要避免递归函数调用超过100~200层的范围,因为可能会破坏堆栈从而使当前脚本终止。 练习 飞向蓝天的恐龙练习非连续性文本练习把字句和被字句的转换练习呼风唤雨的世纪练习呼风唤雨的世纪课后练习 :1.函数的定义方法2.定义函数时包括几个部分3.自定义函数的方法任务二:了解PHP中常用函数任务描述:熟悉各种类型的函数,以方便与以后的调用数组函数字符串函数时间日期函数数学函数图像处理函数文件系统函数知识汇总:3.2.1数组函数数组函数概述数组是编程中的重要元素,在PHP中也不例外。在PHP语法部分已经介绍了数组的定义和使用,对数组有了一定了解。PHP中还为用户提供了一系列用来操作数组的函数,这些函数为标准函数,可以直接使用。下表列出了PHP5.1.6提供的数组函数。表3-1PHP5的数组操作函数函数名功能array_change_key_case返回字符串键名全为小写或大写的数组array_chunk将一个数组分割成多个array_combine创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值array_count_values统计数组中所有的值出现的次数array_fill用给定的值填充数组array_flip交换数组中的键和值array_keys返回数组中所有的键名array_map将回调函数作用到给定数组的单元上array_merge_recursive递归地合并一个或多个数组array_merge合并一个或多个数组array_multisort对多个数组或多维数组进行排序array_pad用值将数组填补到指定长度array_pop将数组最后一个单元弹出(出栈)array_product计算数组中所有值的乘积array_push将一个或多个单元压入数组的末尾(入栈)array_rand从数组中随机取出一个或多个单元array_reverse返回一个单元顺序相反的数组array_shift将数组开头的单元移出数组array_slice从数组中取出一段array_splice把数组中的一部分去掉并用其他值取代array_sum计算数组中所有值的和array_unique移除数组中重复的值array_unshift在数组开头插入一个或多个单元array_values返回数组中所有的值array_walk_recursive对数组中的每个成员递归地应用用户函数array_walk对数组中的每个成员应用用户函数array新建一个数组arsort对数组进行逆向排序并保持索引关系asort对数组进行排序并保持索引关系compact建立一个数组,包括变量名和它们的值count计算数组中的单元数目或对象中的属性个数current返回数组中的当前单元each返回数组中当前的键/值对并将数组指针向前移动一步end将数组的内部指针指向最后一个单元extract从数组中将变量导入到当前的符号表in_array检查数组中是否存在某个值key从关联数组中取得键名krsort对数组按照键名逆向排序ksort对数组按照键名排序list把数组中的值赋给一些变量natcasesort用“自然排序”算法对数组进行不区分大小写字母的排序natsort用“自然排序”算法对数组排序next将数组中的内部指针向前移动一位prev将数组的内部指针倒退一位range建立一个包含指定范围单元的数组reset将数组的内部指针指向第一个单元rsort对数组逆向排序shuffle将数组打乱sizeofcount()的别名sort对数组排序uasort使用用户自定义的比较函数对数组中的值进行排序并保持索引关联uksort使用用户自定义的比较函数对数组中的键名进行排序usort使用用户自定义的比较函数对数组中的值进行排序例子3.12array函数的使用0,"b"=>1,"c"=>2,"d"=>3,"e"=>4);echo"\$arr1[0]=".$arr1[0];echo"
";echo"\$arr2[\"a\"]=".$arr2["a"];?>运行结果图示:图3.9array函数使用图示首先用array()函数定义了拥有5个元素的数组$arr1,并且每个元素分别赋值0,1,2,3,4。然后定义了同样5个元素的数组$arr2,并分别赋值0,1,2,3,4。两个数组的不同是第一个数组用了默认的数字作为下标,第二个数组用了自定义的字符作为下标。因此最后输出数组元素时也使用了各自对应的下标。2.count()函数count()函数可以用来统计一个数组中元素的个数,在循环遍历一个未知长度的数组时非常有用。看下面的例子。例子3.13Count函数的使用程序运行后将输出:“数组$arr1中元素个数为:5”。例子3.15each函数的使用"Bob","age"=>20,"sex"=>"male","postcode"=>"100000");While($kav=each($arr)){echo$kav["key"]."=>".$kav["value"];echo"
";}?>大家可以看到上面的例子比用count()函数更加简洁,但实现的效果却是一样的。上面的这段代码利用了each()函数一个重要性质,那就是当数组已经到达末尾时each()函数返回false。通过前面所学的知识,读者知道false是一个布尔值,表示“否”。因此它正好可以作为while循环的结束条件。这样,可以用一个while循环来每次读取$arr数组中的一个元素,不管数组有多少个元素,当指针到达末尾时,each($arr)返回false,循环结束,程序执行完成。同样实现了动态输出未知长度的数组的功能。在这里,大家可以看到有时候实现同一个功能,可以选择多种途径。作为程序开发人员,应该尽量选择更加简洁、高效的途径。4.current()、reset()、end()、next()和prev()函数之所以要将这5个函数并列起来介绍,是因为这5个函数的作用相似——它们都用来操作数组内部的指针。在PHP中,使用一个内部指针来指向一个数组。需要访问数组中的某一元素时,只需要将指针移动到该元素的位置,即可取出该元素,这大大方便了用户对数组的操作。下面先详细说明这5个函数的作用,然后通过一个例子来验证其使用效果。current():返回当前内部指针所指的元素的值。当到达数组末尾时返回false。reset():将内部指针指向数组的第一个元素,并返回其值。数组为空时返回false。end():将内部指针指向数组的最后一个元素,并返回其值。next():将数组指针指向当前元素的下一个元素,并返回其值。到达末尾时返回false。prev():将数组指针指向当前元素的上一个元素,并返回其值,当到达顶端时返回false。上面5个函数的返回值均为mixed类型,根据数组元素值的类型不同而返回不同的类型。在这里要注意current()函数和next()函数的不同。他们虽然都是取出一个元素值,但是current()并不移动指针。也就是说current()返回的是未移动指针之前所指向的元素的值,而next()返回的是移动指针之后所指向的元素的值。下面来看一个例子。例子3.16数组内部指针移动函数的综合应用";echo"再次调用current():".current($arr);echo"
";echo"调用next():".next($arr);echo"
";echo"调用reset():".reset($arr);echo"
";echo"调用end():".end($arr);echo"
";echo"调用prev():".prev($arr);?>运行结果图示:图3.10数组内部指针移动函数图示上面程序中定义了一个数组$arr,并且用10个数字对其进行了初始化。然后分别调用上述5个函数来观察其运行效果。为了使输出结果直观,在每一次调用之后都输出一个换行。下面来分析程序的运行流程和对应的输出结果:1)数组初始化完成,内部指针指向第一个元素(元素值为1)。2)第一次调用current()函数,返回当前元素值1,指针不变。3)再次调用current()函数,由于内部指针不变,仍然返回1。4)调用next()函数,内部指针指向下一个元素,并返回其值(返回2)。5)调用reset()函数,内部指针再次指向第一个元素,返回1。6)调用end()函数,内部指针指向最后一个元素,并返回其值(返回10)。7)调用prev()函数,内部指针指向前一个元素,并返回其值(返回9)。关于PHP的数组函数,就介绍到这里。表6-1中列出的其他函数,如果读者感兴趣可以自行编写程序进行测试。函数的参数、返回值类型等均可以通过查看PHP手册获得。图3.10数组内部指针移动函数图示上面程序中定义了一个数组$arr,并且用10个数字对其进行了初始化。然后分别调用上述5个函数来观察其运行效果。为了使输出结果直观,在每一次调用之后都输出一个换行。下面来分析程序的运行流程和对应的输出结果:1)数组初始化完成,内部指针指向第一个元素(元素值为1)。2)第一次调用current()函数,返回当前元素值1,指针不变。3)再次调用current()函数,由于内部指针不变,仍然返回1。4)调用next()函数,内部指针指向下一个元素,并返回其值(返回2)。5)调用reset()函数,内部指针再次指向第一个元素,返回1。6)调用end()函数,内部指针指向最后一个元素,并返回其值(返回10)。7)调用prev()函数,内部指针指向前一个元素,并返回其值(返回9)。关于PHP的数组函数,就介绍到这里。表6-1中列出的其他函数,如果读者感兴趣可以自行编写程序进行测试。函数的参数、返回值类型等均可以通过查看PHP手册获得。3.2.2字符串处理函数字符串处理函数概述在Web编程中,字符串是使用最为频繁的数据类型之一。因为PHP不是一门强固类型化语言,因此很多数据都可以方便的作为字符串来处理。字符串操作是编程中极为常用的操作,从简单的打印输出一行字符串到复杂的正则表达式等,处理目标都是字符串。PHP提供了大量实用的函数,可以帮助用户完成许多复杂的字符串处理工作。PHP提供的字符串处理函数及其功能如表3-2所示。表3-2PHP常用字符串操作函数函数名功能addcslashes像C一样使用反斜线转义字符串中的字符addslashes使用反斜线引用字符串bin2hex将二进制数据转换成十六进制表示choprtrim()的别名chr返回指定的字符chunk_split将字符串分割成小块convert_cyr_string将字符由一种Cyrillic字符转换成另一种convert_uudecode对一个未编码字符串进行编码convert_uuencode对一个字符串进行解码count_chars返回字符串所用字符的信息crc32计算一个字符串的crc32多项式echo输出字符串explode使用一个字符串分割另一个字符串fprintf将格式化字符串写入流html_entity_decode将HTML标记转换为特殊字符htmlspecialchars将特殊字符转换为HTML标记implode合并数组元素到一个字符串中joinImplode函数的别名ltrim去除字符串左侧空格md5_file用md5算法对文件进行加密md5用md5算法对字符串进行加密nl2br将换行符替换成HTML的换行符
number_format将一个数字格式化成三位一组ord返回一个字符的ASCII码print输出字符串printf输出格式字符串rtrim去除字符串右侧空格sprintf返回一个格式字符串str_pad用一个字符串填充另外一个字符串到一定长度str_repeat重复输出一个字符串str_replace字符串替换str_shuffle随机打乱一个字符串str_split将字符串转换成数组str_word_count统计字符串中的单词数strchrstrstr()的别名strcmp字符串比较大小strip_tags过滤掉字符串中的PHP和HTML标记strlen获得字符串的长度(所占字节数)strpbrk以子串中的任意一个字符第一次出现的位置为界将字符串分成两部分,并返回后半部分strpos查找一个子串在字符串中第一次出现的位置strrpos查找一个子串在字符串中最后一次出现的位置strrev将一个字符串顺序倒转strrchr查找一个字符在一个字符串中最后一次出现的位置并返回从此位置开始之后的字符串strstr查找一个子串在一个字符串中第一次出现的位置,并返回从此位置开始的字符串strstrstrrchr函数的别名strtok将字符串打碎成小段strtolower将字符串中的字符全部变为小写strtoupper将字符串中的字符全部变为大写strtr批量字符替换substr_count统计一个子串在字符串中出现的次数substr_replace在字符串内部定制区域内替换文本substr截取字符串的一部分trim去除字符串首尾的连续空格ucfirst将字符串首字母大写ucwords将字符串中每个单词的首字母大写上表列出了常用的字符串操作函数1.trim()、ltrim()、rtrim()、chop()和strlen()函数这5个函数中前4个函数的功能类似,因此将其放在一起介绍。chop()函数与rtrim()函数作用相同,都是去除字符串右端的空格。ltrim()用来去除字符串左端的空格,而trim()用来去除字符串左右两端的空格。下面来看一个例子,其中用到了另外一个字符串处理函数strlen()来获得字符串的长度。例子3.17去除字符串两端空格";echo"原始字符串长度:".strlen($str)."
";$str1=ltrim($str);echo"执行ltrim()之后的长度:".strlen($str1)."
";$str2=rtrim($str);echo"执行rtrim()之后的长度:".strlen($str2)."
";$str3=trim($str);echo"执行trim()之后的长度".strlen($str3)."
";echo"去掉首尾空格之后的字符串:[".$str3."]";?>运行结果图示:图3.11去除两端空格图示在上面程序中,首先构造了一个字符串$str,这个字符串由9个汉字和4个空格组成,4个空格中有2个在左侧,1个在中间,1个在右侧(由于浏览器会忽略掉连续的空格,因此在浏览器中连续的两个空格的显示效果与一个空格相同)。由于每个汉字占2个字节,每个英文半角空格占1个字节,因此初始字符串的长度为9×2+4=22。用strlen()函数来输出其长度。首先执行ltrim()函数,将返回结果存放在$str1中。由于ltrim()函数会去掉字符串左侧的所有连续的空格,因此两个空格就被去掉,$str2的字符串长度为20。然后执行rtrim()函数,将返回结果存放在$str2中。rtrim()函数去掉了字符串$str的右侧一个空格,因此$str2的长度为21。最后执行trim()函数。trim()函数去除字符串左右两侧的所有空格,因此左侧的2个空格和右侧的1个空格被去掉,剩余的部分长度为19。通过$str3的输出也可以看出,字符串两侧的空格已经消失。去除连续的空格往往用在做字符串比较之前。要比较两个字符串是否相同时,如果其中一个字符串首尾带有空格,那比较结果就会为假。如"abc"和"abc"这两个字符串,看似内容完全相同,但由于后者多面多了一个空格,在比较时会返回false。因此比较两个字符串变量的值是否相同时,往往首先用trim函数处理一下两侧的空格。值得注意的是,trim系列函数只去除字符串两侧的空格,而不会去除中间的空格。如上面例子中,“你看不到我”和“我是空格”之间有一个空格。调用这3个函数之后空格仍然存在,说明字符串中间的空格不会受影响。如果确实想去除掉一个字符串中的所有空格,可以使用后面要讲的字符串替换函数来实现。2.ucwords()、ucfirst()、strtoupper()、strtolower()、str_word_count()函数这5个函数对字符串中的单词进行处理,包括转换大小写转换、计算单词个数等。还是通过一个例子来了解它们的用法。例子3.18字符串处理中的单词处理";$str1=ucfirst($str);echo"执行ucfirst()之后:".$str1."
";$str2=ucwords($str);echo"执行ucwords()之后:".$str2."
";$str3=strtoupper($str);echo"执行strtoupper()之后:".$str3."
";$str4=strtolower($str);echo"执行strtolower()之后:".$str4."
";echo"字符串中一共有:".str_word_count($str)."个单词。";?>运行结果图示:图3.12字符串处理中的单词处理图示上面的代码中构造了一个包含有6个单词、大小写混合的字符串,并用它来测试函数的运行结果。程序调用ucfirst()函数将整个字符串首字母变为大写,调用ucwords()函数将每个单词的首字母变为大写,调用strtoupper()函数将全部字母都变成大写,调用strtolower()函数将所有字母变成小写,最后调用str_word_count()函数统计字符串中的单词个数。3.字符串查找函数程序中经常用到在一个字符串中查找某个字符或者某个子串的操作;对字符串中的某些字符按照用户的需求进行替换操作以及截取字符串的一部分等。PHP都已经准备好了一系列函数实现这些操作,用户只需要了解函数的使用方法,即可轻松实现。常用的字符串查找函数有substr_count()、strpos()、strrpos()、strstr()、strrchr()等。它们的使用方法和功能如下。1)substr_count()函数substr_count()函数的格式为:intsubstr_count(stringhaystack,stringneedle[,intoffset[,intlength]])substr_count()函数用来统计一个字符串needle在另一个字符串haystack中出现的次数。该函数返回值是一个整数。有两个可选参数:offset和length,分别表示要查找的起点和长度。值得注意的是,offset是从0开始计算,而不是从1开始计算的。例子3.19用substr_count函数统计字符串出现次数本例的输出结果为“3,1”。substr_count($str,"ab")的作用是返回字符串"ab"在字符串$str中的次数,由于"ab"在整个字符串中出现了三次,因此值为3。substr_count($str,"ab",6,4)的作用是返回字符串"ab"在$str中的从第6个字符开始(包含第6个字符,而且从0开始计算),往后数4个字符为止(即第9个字符)之间的字符串中出现的次数。这个描述看起来非常拗口和难懂。不妨换一种描述方法:参数“6,4”限定了查找字符串的范围。不指定参数时,substr_count函数从整个字符串$str中查找"ab"的出现次数,而指定了参数之后,substr_count函数从指定的范围内查找"ab"的出现次数。这个范围就是从字符串的第6个字符开始到第9个字符为止的4个字符。具体到本例中,就是"nab"(注意n和a之间的一个空格也算一个字符)。显然,在这个范围内,"ab"只出现了一次,因此返回1。2)strrpos()函数和strpos()函数strrpos()函数的格式为:intstrrpos(stringhaystack,mixedneedle[,intoffset])该函数返回字符needle在字符串haystack中最后一次出现的位置。这里needle只能是一个字符,而不能是一个字符串。如果提供一个字符串,PHP也只会取字符串的第一个字符,其他字符无效。参数offset也是用来限制查找的范围。strrpos()函数的格式为:intstrpos(stringhaystack,mixedneedle[,intoffset])该函数与strrpos函数仅一字之差,但功能相差很大。strpos()函数中的needle参数允许使用一个字符串,而且返回的是这个字符串在haystack中第一次出现的位置,而不是最后一次出现的位置。例子3.20字符串查找函数的使用(一)";echo"ab在字符串中的第一次出现位置为:".strpos($str,"ab")."
";echo"ab在字符串中的最后一次出现位置为:".strrpos($str,"ab")."
";echo"abcd在字符串中第一次出现的位置为:".strpos($str,"abcd");?>运行结果图示:图3.13字符串查找函数的使用图示上面程序中首先构造了一个包含多个"ab"的字符串。然后分别调用strpos和strrpos函数来获得"ab"子串在字符串中第一次和最后一次出现的位置。输出结果为8和23。这里有两点值得注意:第一点是这里的8和23都是指从0开始计算的,而且是从子串的第一个字母出现的位置开始计算。如子串为"ab",找到"ab"之后,以“a”的位置序号作为函数的返回值,而不是“b”的位置序号。第二点是如果要查找的字符串不存在,则返回布尔值false。由于false无法直接输出,因此最后查找“abcd”子串时没有任何输出。3)strstr()函数和strrchr()函数strstr()函数和strrchr()两个函数的格式分别是:stringstrstr(stringhaystack,stringneedle)stringstrrchr(stringhaystack,stringneedle)由此可见,这两个函数均返回一个字符串,而不是返回一个表示位置的整数。两个函数函数名不同,使用方法完全相同,但是其作用略有不同。strstr()函数用来查找一个子串needle在字符串haystack中第一次出现的位置,并返回从此位置开始的字符串。strrchr()函数查找一个字符needle在字符串haystack中最后一次出现的位置并返回从此位置开始之后的字符串。例子3.21字符串查找函数的使用(二)";echo"用strstr函数搜索“,”的返回结果:".strstr($str,",达式")."
";echo"用strstr函数搜索“孤舟”的返回结果:".strstr($str,"孤舟")."
";$str2="Ihaveagreatdream.";echo"2.原始字符串为:".$str2."
";echostrrchr($str2,"e");echo"
";echostrrchr($str2,"at");?>运行结果图示:图3.14字符串查找函数的使用(二)运行结果图示通过深入分析本例的输出结果,就能够准确地把握strstr和strrchr函数的功能特点。首先,在第一个字符串中;用strstr函数搜索逗号“,”。该函数返回字符串中第一次出现“,”的位置之后的字符串。由于第一次出现逗号是在"千山鸟飞绝"的“绝”字之后,因此,函数的返回结果就是",万径人踪灭……"(注意逗号本身也会被返回)。为了证明strstr函数可以使用一个字符串而不仅仅单个字符作为参数,又在字符串中搜索“孤舟”,显然应当返回"孤舟蓑笠翁……"。和程序的运行结果相同。然后,又构造了一个英文字母构成的字符串"Ihaveagreatdream."。用strrchr函数在字符串中查找“e”,返回字符串中最后一次出现“e”的位置之后的内容,程序中3次出现“e”,但最后一次出现是在“dream”中,于是函数返回"eam."(e本身也被返回)。最后测试是否可以把一个字符串作为参数传递给strrchr函数,在字符串中查找字符串“at”。如果该函数支持字符串参数,按照上面的分析,应当返回"atdream."。但是根据图3.14的运行结果可知,返回的却是“am.”。为什么呢?因为strrchr函数不支持字符串参数。如果提供了字符串参数,会自动截取字符串的第一个字符作为参数。也就是说参数“at”和参数“a”所起的作用一样。于是函数返回字符串中最后一次出现“a”之后的内容。也就是“am.”。可能有读者会问,为什么要构造一个英文的字符串来讲解strrchr函数呢?通过刚才的分析就已经能够得到 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 。因为每一个汉字都占两个字节,在函数中两个字节会被认为是多个字符(英文中一个字符占一个字节)。因此,strrchr函数就无法支持中文。也就是说不能把一个或多个中文字符作为参数传递给strrchr函数。除了strrchr函数之外,PHP中还有很多函数无法直接处理中文,这里不一一列出,读者在学习PHP和编写程序时应当多加注意。4.字符串替换函数字符串替换是Web编程当中极为常用的操作,如要过滤掉用户提交的不文明的词语,或者处理掉字符串中包含的危险脚本,替换掉某些关键词等。PHP提供了一些函数来完成字符串替换操作,如nl2br()、str_replace()等。1)nl2br()函数该函数的名字看起来比较怪,中间包含一个数字“2”,用汉语念起来似乎有点别扭。实际上这里的“2”在英文中念“two”,与“to”谐音。这里的“2”实际上就是“to”的一种缩写。明白了这一点之后,函数名字和功能就一目了然了。在很多中文参考资料中,将此函数的功能描述为“将换行符替换成HTML的换行符
”,本书也沿用这一解释。但是如果查阅英文版PHP手册,会发现大意为“在每一行前插入HTML换行标记
”。也就是说是“插入”而不是“替换”。但是我们在使用此函数时,就其效果而言相当于“替换”,因此我们仍然采用一贯的解释,将其归为字符串替换函数。我们通过一个简单例子来说明此函数的作用。例子3.22nl2br()函数的使用请输入一段包含回车的文字:
";echo"直接输出接收到的内容:
";echo$content;echo"
(内容长度:".strlen($content).")
";echo"


";echo"用nl2br()处理接收到的内容,然后输出:
";echonl2br($content);echo"
(内容长度:".strlen(nl2br($content)).")
";}?>本程序首先创建了一个TextArea多行文本输入框,并要求输入一段包含回车的文字。之所以要求包含回车,就是因为nl2br()函数处理的对象就是回车。如果不包含回车就无法测试其效果。不妨输入“子丑寅卯↙辰巳午未↙申酉戌亥”,其中“↙”表示按下键盘上的回车键。这时点击“提交看效果”按钮。通过运行大家可以深刻的了解到本函数的作用,在未使用nl2br()函数对接收到的内容进行处理时,本来输入了3行内容,在网页中显示时全都连成了一行。这是因为HTML语言不识别回车换行符号,无论在HTML代码中连续输入多少个回车换行,都不会在网页上看到效果,就是因为浏览器会忽略掉HTML代码中的回车换行。用nl2br()对内容进行处理后,每一行前面都自动添加了一个“
”标记。这个标记就是通常用的HTML中的换行标记“
”,不过是写法略有不同而已。原本输入的3行内容,便正常地显示出来。此外,通过比较nl2br()处理前和处理后的字符串长度,也可以看出此函数的工作原理。未处理之前提交的数据内容由12个汉字和两个回车换行构成,长度为12×2+2×2=28(每次按下键盘的回车键都会产生一个换行和一个回车两个字符)。而用nl2br()函数处理之后,数据内容长度变成40,增加了12字节。而12字节恰好是2个“
”的长度(注意br和/之间的空格也占一个字节)。因此,足以证明nl2br()函数的作用是在被处理的字符串中每一行之前插入一个“
”标记。它并没有替换掉任何内容。虽然nl2br()函数的本质并没有进行替换,但在使用中,其效果等同于将回车换行符号替换为HTML换行标记。因此在不严格要求的前提下,可以称之为字符替换函数。2)str_replace()函数PHP提供的str_replace函数将一个字符串中的任意子串全部替换为另外一个子串,其使用格式如下:mixedstr_replace(mixedsearch,mixedreplace,mixedsubject[,int&count])这个格式看起来有点复杂。简单地解释为:str_replace()函数将subject中的所有search替换成replace,并把替换的次数存放在count中,其中count参数为可选。这里的search、repalce、subject以及整个函数的返回值都是mixed类型,也就说提供的参数可以是多种类型,常用的有字符串和数组。例子3.23字符串替换函数综合范例".$str."
";$str=str_replace("[","(",$str);$str=str_replace("]",")",$str);echo"字符替换之后:".$str."
";//字符串替换$str=str_replace("(逗)",",",$str);$str=str_replace("(句)","。",$str);echo"字符串替换之后:".$str."
";?>运行结果图示图3.15字符串替换函数综合范例图示构造了一个字符串,其中逗号用“[逗]”表示,句号用“[句]”表示。第
本文档为【项目三:PHP中函数的学习-PHP+MySQL开发项目教程课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
自由的飞翔
竭诚提供优质的文档资源。
格式:ppt
大小:4MB
软件:PowerPoint
页数:97
分类:
上传时间:2023-02-22
浏览量:2