欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:91518635       资源大小:4.82MB        全文页数:97页
    • 资源格式: PPT        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    项目三:PHP中函数的学习任务一:初步认识PHP中的函数任务描述:函数是PHP 最重要的组成部分。如果说前面介绍的变量、表达式、流程控制是PHP 的基础的话,那么可以说函数就是PHP 的主体。什么是函数呢?简单的说,函数就是为了完成特定功能而作为一个整体存在的代码块。PHP 中有大量的库函数,同时也允许用户自定义函数。下面就带领读者来认识一下函数。本节内容包括:什么是函数、函数的参数、函数的返回值、PHP 内部函数的使用、PHP 加载外部函数、如何自定义函数等。3.1.1什么是函数简单的说,函数是为了完成特定功能,而作为一个整体存在的代码块。例如,求绝对值函数abs()完成的功能是求一个数的绝对值,而且它也是独立存在的,并不受其他变量或函数的影响。函数采用以下方法来定义。function f_name($arg)expr;return$retval;以上代码中f_name 为函数名,以名字来区别其他函数。$arg 为函数的参数,参数是在函数执行中要传递的值,它跟在函数后面的括号里。如果要求“-3”的绝对值就要用参数来传递“-3”,如abs(-3)。expr 为函数执行的语句,$revel 为函数的返回值,返回值并不是每个函数都有。返回值指完成函数后返回到主程序中的值。如abs(-3)的返回值为“-3”的绝对值“3”。其中函数名的命名规则与PHP 中的变量命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。在PHP 3 中一个函数在调用之前必须已经被初始化。如果调用一个未被定义的函数,将会导致错误。从PHP 4 开始,就不再有这种限制,这意味着可以先调用一个并未被定义的函数,然后再去定义函数。但是如果函数的定义是有条件的,那么在这有条件的定义发生前,是不能被调用的。就像下面这两种情况。1有条件的定义具体内容请参看以下代码:例子3.1运行结果为:图3.1 定义函数图示以上为第1 种情况,虽然定义函数的条件为真,但是在有条件的定义前,函数是不能被调用的。即如果某条件为真则再去考虑是否去做某件事,如果这条件根本不存在,就不考虑去做这件事,更不用说怎么去做了。这里举一个形象的例子。例如,一个家长叫小孩子去买东西。小孩子如何去买东西可以看作是一个函数。但是小孩也给家长提了条件,如果给1 元辛苦费才去买。即只有满足了给1 元钱的条件,才去执行买东西这个函数,也才去考虑怎么去买。如果条件根本不存在,那么函数就相当于没有定义,当然也不会执行了。例子3.3函数参数的使用实例?phpfunction B_I_text($text)/定义有参数函数echo.$text.;/打印字符并加入粗体斜体效果$string=PHP编程是一件很有趣的事情;/定义变量echo$string;/打印变量echo;B_I_text($string);/用实际参数调用函数?运行结果图示:图3.2 函数参数的使用实例上例中,先定义了有形式参数的函数。然后定义变量,先显示变量,再通过实际参数调用函数。从这个例子中,读者可以了解到函数的参数是如何传递值到函数体的。在使用函数参数时还应该注意一个问题。函数的参数是有类型限制的,即某一函数的参数可能只对应某一种类型。如果参数的类型与函数要求的类型不一致,就会发生错误,可能会返回用户不希望的结果。如abs()函数的作用是计算一个数的绝对值,所以它的参数只能为整型或者浮点型数。如果用字符或者数组作为函数的参数,则一定会出现用户不希望的结果。另外,有的函数有默认的值的参数。这时的参数就变成了可选参数,即调用该函数时可以不加有默认值的参数。函数将用默认值来替换该参数。下面举一个例子来说明:例子3.4函数有默认值参数的使用实例?phpfunction B_I_text($text,$color=#000000)/定义有参数函数,其中$color 参数有默认值echo;/使用颜色参数echo.$text.;/打印字符并加入粗体斜体效果echo;$string=PHP 编程是一件很简单的事情;/定义变量echo$string;/打印变量echo;B_I_text($string);/调用函数,无$color 参数Echo;B_i_text($string,red);/调用函数,加入$color 参数?运行结果:3.1.3函数的返回值function f_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?phpHeader(Content-type:image/png);/输出一个PNG 图片文件$im=imagecreate(440,100);/初始化图形区域$black=imagecolorallocate($im,0,0,0);/定义黑色$white=imagecolorallocate($im,255,255,255);/定义白色$yellow=imagecolorallocate($im,255,255,0);/定义黄色$blue=imagecolorallocate($im,0,0,255);/定义蓝色$red=imagecolorallocate($im,255,0,0);/定义红色$zi=imagecolorallocate($im,255,0,255);/定义紫色$color=$blue;/定义$color 变量为蓝色$font=wingdings.ttf;/定义字体文件imagefilledrectangle($im,5,5,435,95,$color);/用蓝色画一个矩形imagestring($im,5,7,10,I:send,$white);/用白色写字符for($i=0;$i大家可以自己在PHP环境中运行,看一下效果。3.1.6自定义函数在实际进行PHP 编程时,由于要面对的情况可能十分复杂,仅仅依靠PHP 内置的库函数,有时往往不能实现用户所要达到的目的。这时就要用户自己构造函数来解决实际问题。PHP 允许用户使用自定义函数。那么,自定义函数应该怎么用呢?这一节就来解决如何使用自定义函数及函数的动态调用、函数的递归等问题。图3.6 函数自定义图示可以看到在代码的第7行就是我们自己定义的函数,函数为求两个数的最小公倍数。通过上面的例子大家可以了解到在PHP中是如何自定义函数的,只要掌握了方法,自定义函数是非常简单的一件事情。2.使用自定义函数自定义函数在完成定义后,就可以使用了。使用的方法也相当简单,就像使用PHP 库函数一样。代码如下:function functionname();函数名后面加上括号,里面带上适当的参数就行了。以如何自定义函数中的例子说明,例子中在输出结果的时echo my_f()中的my_f()就是调用的代码第7行中自定义的函数,同样的调用函数也是很简单,读者很容易掌握。3函数的动态调用由于PHP 支持可变化的函数概念。所以如果在一个变量的名称后面加上一对圆括号“()”,那么PHP 将去寻找与这个变量名字相同的函数。无论这个变量的数值是什么,函数都会被执行。这个过程就实现了函数的动态调用。为了形象说明函数的动态调用这个问题,下面通过实例来介绍。例子3.10函数的动态调用实例?phpfunction my_f_1($text)/定义函数1echo;/以12 号字体输出文字echo$text;echo;function my_f_2($text)/定义函数2echo;/以20 号字体输出文字echo;/给文字加上下划线效果echo$text;echo;echo;$test=my_f_1;$test(I LIKE PHP!);/动态调用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 即可。除此以外的情况直接返回了和数组定义完全相同的公式:某一项为其前两项之和,从而实现了函数的递归。可以看出使用函数的递归解决此类问题相对于用迭代法来说是简单的、有效的。另外,在使用函数递归时要注意以下两个问题:在递归中要有使递归中止的代码,不能使递归陷入无限循环之中。同时要避免递归函数调用超过100200 层的范围,因为可能会破坏堆栈从而使当前脚本终止。练习:1.函数的定义方法2.定义函数时包括几个部分3.自定义函数的方法任务二:了解PHP中常用函数任务描述:熟悉各种类型的函数,以方便与以后的调用数组函数字符串函数时间日期函数数学函数图像处理函数文件系统函数知识汇总:3.2.1数组函数数组函数概述数组是编程中的重要元素,在PHP中也不例外。在PHP语法部分已经介绍了数组的定义和使用,对数组有了一定了解。PHP中还为用户提供了一系列用来操作数组的函数,这些函数为标准函数,可以直接使用。下表列出了PHP5.1.6提供的数组函数。表3-1 PHP 5的数组操作函数函 数 名功 能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$arr10=.$arr10;echo;echo$arr2a=.$arr2a;?运行结果图示:图3.9 array函数使用图示首先用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$kavkey.=.$kavvalue;echo;?大家可以看到上面的例子比用count()函数更加简洁,但实现的效果却是一样的。上面的这段代码利用了each()函数一个重要性质,那就是当数组已经到达末尾时each()函数返回false。通过前面所学的知识,读者知道false是一个布尔值,表示“否”。因此它正好可以作为while循环的结束条件。这样,可以用一个while循环来每次读取$arr数组中的一个元素,不管数组有多少个元素,当指针到达末尾时,each($arr)返回false,循环结束,程序执行完成。同样实现了动态输出未知长度的数组的功能。在这里,大家可以看到有时候实现同一个功能,可以选择多种途径。作为程序开发人员,应该尽量选择更加简洁、高效的途径。4current()、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数组内部指针移动函数的综合应用?php$arr=array(1,2,3,4,5,6,7,8,9,10);echo 调用current():.current($arr);echo;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-2 PHP常用字符串操作函数函 数 名功 能addcslashes 像C一样使用反斜线转义字符串中的字符addslashes 使用反斜线引用字符串bin2hex 将二进制数据转换成十六进制表示 chop rtrim()的别名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 统计字符串中的单词数strchr strstr()的别名strcmp 字符串比较大小strip_tags 过滤掉字符串中的PHP和HTML标记strlen 获得字符串的长度(所占字节数)strpbrk 以子串中的任意一个字符第一次出现的位置为界将字符串分成两部分,并返回后半部分strpos 查找一个子串在字符串中第一次出现的位置strrpos查找一个子串在字符串中最后一次出现的位置strrev 将一个字符串顺序倒转strrchr 查找一个字符在一个字符串中最后一次出现的位置并返回从此位置开始之后的字符串strstr查找一个子串在一个字符串中第一次出现的位置,并返回从此位置开始的字符串strstr strrchr函数的别名strtok 将字符串打碎成小段strtolower 将字符串中的字符全部变为小写strtoupper 将字符串中的字符全部变为大写strtr 批量字符替换substr_count 统计一个子串在字符串中出现的次数substr_replace 在字符串内部定制区域内替换文本substr 截取字符串的一部分trim 去除字符串首尾的连续空格ucfirst 将字符串首字母大写ucwords 将字符串中每个单词的首字母大写上表列出了常用的字符串操作函数1trim()、ltrim()、rtrim()、chop()和strlen()函数这5个函数中前4个函数的功能类似,因此将其放在一起介绍。chop()函数与rtrim()函数作用相同,都是去除字符串右端的空格。ltrim()用来去除字符串左端的空格,而trim()用来去除字符串左右两端的空格。下面来看一个例子,其中用到了另外一个字符串处理函数strlen()来获得字符串的长度。例子3.17去除字符串两端空格?php$str=你看不到我 我是空格;echo 方括号中为原始字符串:.$str.;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个字节,因此初始字符串的长度为92422。用strlen()函数来输出其长度。首先执行ltrim()函数,将返回结果存放在$str1中。由于ltrim()函数会去掉字符串左侧的所有连续的空格,因此两个空格就被去掉,$str2的字符串长度为20。然后执行rtrim()函数,将返回结果存放在$str2中。rtrim()函数去掉了字符串$str的右侧一个空格,因此$str2的长度为21。最后执行trim()函数。trim()函数去除字符串左右两侧的所有空格,因此左侧的2个空格和右侧的1个空格被去掉,剩余的部分长度为19。通过$str3的输出也可以看出,字符串两侧的空格已经消失。去除连续的空格往往用在做字符串比较之前。要比较两个字符串是否相同时,如果其中一个字符串首尾带有空格,那比较结果就会为假。如abc和abc这两个字符串,看似内容完全相同,但由于后者多面多了一个空格,在比较时会返回false。因此比较两个字符串变量的值是否相同时,往往首先用trim函数处理一下两侧的空格。值得注意的是,trim系列函数只去除字符串两侧的空格,而不会去除中间的空格。如上面例子中,“你看不到我”和“我是空格”之间有一个空格。调用这3个函数之后空格仍然存在,说明字符串中间的空格不会受影响。如果确实想去除掉一个字符串中的所有空格,可以使用后面要讲的字符串替换函数来实现。2ucwords()、ucfirst()、strtoupper()、strtolower()、str_word_count()函数这5个函数对字符串中的单词进行处理,包括转换大小写转换、计算单词个数等。还是通过一个例子来了解它们的用法。例子3.18 字符串处理中的单词处理?php$str=ni hao,wo jiao Wang Xiao-ming.;echo 原始字符串:.$str.;$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()函数的格式为:int substr_count(string haystack,string needle,int offset,int length)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个字符。具体到本例中,就是n ab(注意n和a之间的一个空格也算一个字符)。显然,在这个范围内,ab只出现了一次,因此返回1。2)strrpos()函数和strpos()函数strrpos()函数的格式为:int strrpos(string haystack,mixed needle,int offset)该函数返回字符needle在字符串haystack中最后一次出现的位置。这里needle只能是一个字符,而不能是一个字符串。如果提供一个字符串,PHP也只会取字符串的第一个字符,其他字符无效。参数offset也是用来限制查找的范围。strrpos()函数的格式为:int strpos(string haystack,mixed needle,int offset)该函数与strrpos函数仅一字之差,但功能相差很大。strpos()函数中的needle参数允许使用一个字符串,而且返回的是这个字符串在haystack中第一次出现的位置,而不是最后一次出现的位置。例子3.20字符串查找函数的使用(一)?php$str=I am an abstract about abroad.;echo 原始字符串为:.$str.;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()两个函数的格式分别是:string strstr(string haystack,string needle)string strrchr(string haystack,string needle)由此可见,这两个函数均返回一个字符串,而不是返回一个表示位置的整数。两个函数函数名不同,使用方法完全相同,但是其作用略有不同。strstr()函数用来查找一个子串needle在字符串haystack中第一次出现的位置,并返回从此位置开始的字符串。strrchr()函数查找一个字符needle在字符串haystack中最后一次出现的位置并返回从此位置开始之后的字符串。例子3.21字符串查找函数的使用(二)?php$str=千山鸟飞绝,万径人踪灭,孤舟蓑笠翁,独钓寒江雪。;echo 1.原始字符串为:.$str.;echo 用strstr函数搜索“,”的返回结果:.strstr($str,达式).;echo 用strstr函数搜索“孤舟”的返回结果:.strstr($str,孤舟).;$str2=I have a great dream.;echo 2.原始字符串为:.$str2.;echo strrchr($str2,e);echo;echo strrchr($str2,at);?运行结果图示:图3.14字符串查找函数的使用(二)运行结果图示通过深入分析本例的输出结果,就能够准确地把握strstr和strrchr函数的功能特点。首先,在第一个字符串中;用strstr函数搜索逗号“,”。该函数返回字符串中第一次出现“,”的位置之后的字符串。由于第一次出现逗号是在千山鸟飞绝的“绝”字之后,因此,函数的返回结果就是,万径人踪灭(注意逗号本身也会被返回)。为了证明strstr函数可以使用一个字符串而不仅仅单个字符作为参数,又在字符串中搜索“孤舟”,显然应当返回孤舟蓑笠翁。和程序的运行结果相同。然后,又构造了一个英文字母构成的字符串I have a great dream.。用strrchr函数在字符串中查找“e”,返回字符串中最后一

    注意事项

    本文(项目三PHP中函数的学习PHP+MySQL开发项目教程课件.ppt)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开