PHP数组与字符串.ppt

上传人:sh****n 文档编号:6402785 上传时间:2020-02-24 格式:PPT 页数:90 大小:1.09MB
返回 下载 相关 举报
PHP数组与字符串.ppt_第1页
第1页 / 共90页
PHP数组与字符串.ppt_第2页
第2页 / 共90页
PHP数组与字符串.ppt_第3页
第3页 / 共90页
点击查看更多>>
资源描述
第4章PHP数组与字符串 4 1数组及处理 4 2字符串操作 4 3正则表达式 4 1数组及处理 4 1 1数组的创建和初始化1 使用array 函数创建数组PHP中的数组可以是一维数组 也可以是多维数组 创建数组可以使用array 函数 语法格式如下 arrayarray keys values 语法 keys values 用逗号分开 定义了关键字的键名和值 自定义键名可以是字符串或数字 如果省略了键名 会自动产生从0开始的整数作为键名 如果只对某个给出的值没有指定键名 则取该值前面最大的整数键名加1后的值 例如 blue name picture number 01 定义带键名的数组 array3 array 1 2 2 4 5 6 8 10 定义省略某些键名的数组 4 1 1数组的创建和初始化 为了更好地理解数组的键名和值 这里介绍一个打印函数print r 这个函数用于打印一个变量的信息 如果给出的是字符串 整型或浮点型的变量 将打印变量值本身 如果给出的是数组类型的变量 将会按照一定格式显示键名和值 对象类型与数组类似 print r 函数的语法格式如下 boolprint r mixedexpression boolreturn 如果想捕捉print r 的输出 可使用return参数 若此参数设为TRUE print r 将不打印结果 而是返回其输出 此为默认动作 例如 5 b 10 20 print r array 输出结果为 Array a 5 b 10 0 20 4 1 1数组的创建和初始化 数组创建完后 要使用数组中某个值 可以使用 array 键名 的形式 如果数组的键名是自动分配的 则默认情况下0元素是数组的第一个元素 例如 5 b 10 c 15 echo array2 b 输出10 另外 通过对array 函数的嵌套使用 还可以创建多维数组 例如 array 红色 蓝色 白色 number array 1 2 3 4 5 6 定义二维数组 arrayecho array color 2 输出数组元素 输出结果为 白色 print r array 打印二维数组 输出结果为 Array color Array 0 红色 1 蓝色 2 白色 number Array 0 1 1 2 2 3 3 4 4 5 5 6 4 1 1数组的创建和初始化 数组创建之后 可以使用count 和sizeof 函数获得数组元素的个数 参数是要进行计数的数组 例如 7 8 9 5 10 echocount array 输出8echosizeof array 输出8 4 1 1数组的创建和初始化 2 使用变量建立数组通过使用compact 函数 可以把一个或多个变量 甚至数组 建立成数组元素 这些数组元素的键名就是变量的变量名 值是变量的值 语法格式如下 arraycompact mixed varname mixed 每个参数 varname可以是一个包括变量名的字符串或者是一个包含变量名的数组 对每个参数 compact 在当前的符号表中查找该变量名并将它添加到输出的数组中 变量名成为键名而变量的内容成为该键的值 任何没有变量名与之对应的字符串都被略过 例如 输出结果为 Array num 10 str string array Array 0 1 1 2 2 3 4 1 1数组的创建和初始化 与compact 函数相对应的是extract 函数 其作用是将数组中的单元转化为变量 例如 1 key2 2 key3 3 extract array echo key1 key2 key3 输出123 4 1 1数组的创建和初始化 3 使用两个数组创建一个数组使用array combine 函数可以使用两个数组创建另外一个数组 语法格式如下 arrayarray combine array keys array values array combine 函数用来自 keys数组的值作为键名 来自 values数组的值作为相应的值 最后返回一个新的数组 例如 avocado red apple yellow banana 4 1 1数组的创建和初始化 4 建立指定范围的数组使用range 函数可以自动建立一个值在指定范围的数组 语法格式如下 arrayrange mixed low mixed high number step low为数组开始元素的值 high为数组结束元素的值 如果 low high 则序列将从 high到 low step是单元之间的步进值 step应该为正值 如果未指定则默认为1 range 函数将返回一个数组 数组元素的值就是从 low到 high之间的值 例如 1 1 2 2 3 3 4 4 5 print r array2 输出 Array 0 2 1 4 2 6 3 8 4 10 print r array3 输出 Array 0 a 1 b 2 c 3 d 4 e 4 1 1数组的创建和初始化 5 自动建立数组数组还可以不用预先初始化或创建 在第一次使用它的时候 数组就已经创建 例如 a 1 b 2 c 4 1 2键名和值的操作 1 存在性检查检查数组中是否存在某个键名和值可以使用array key exists 和in array 函数 array key exists 和in array 函数都为布尔型 存在则返回TRUE 不存在则返回FASLE 例如 4 7 5 if in array 5 array 判断是否存在值5echo 数组中存在值 5 输出 数组中存在值 5 if array key exists 3 array 判断是否不存在键名3echo 数组中不存在键名 3 输出 数组中不存在键名 3 4 1 2键名和值的操作 array search 函数也可以用于检查数组中的值是否存在 与in array 函数不同的是 in array 函数返回的是TRUE或FALSE 而array search 函数当值存在时返回这个值的键名 若值不存在则返回NULL 例如 4 1 2键名和值的操作 2 获取和输出使用array keys 和array values 函数可以取得数组中所有的键名和值 并保存到一个新的数组中 例如 红色 blue 蓝色 white 白色 newarr1 array keys arr 取得数组中的所有键名 newarr2 array values arr 取得数组中的所有值print r newarr1 输出结果 Array 0 red 1 blue 2 white print r newarr2 输出结果 Array 0 红色 1 蓝色 2 白色 使用key 函数可以取得数组当前单元的键名 例如 1 b 2 c 3 d 4 echokey array 输出 a next array 将数组中的内部指针向前移动一位echokey array 输出 b 4 1 2键名和值的操作 使用list 函数可以将数组中的值赋给指定的变量 这样就可以将数组中的值输出显示出来了 这个函数在数组遍历的时候将非常有用 例如 4 1 2键名和值的操作 3 填充数组使用array fill 和array fill keys 函数可以用给定的值填充数组的值和键名 array fill 函数的语法格式如下 arrayarray fill int start index int num mixed value array fill keys 函数的语法格式如下 arrayarray fill keys array keys mixed value 例如 red 3 red 4 red print r array2 输出结果 Array a 数组值 3 数组值 b 数组值 4 1 2键名和值的操作 4 键值交换使用array flip 函数可以交换数组中的键名和值 例如 1 b 2 c 3 array array flip array 交换键名和值print r array 输出结果 Array 1 a 2 b 3 c 4 1 2键名和值的操作 5 删除替换array splice 函数可以将数组中的一个或多个单元删除并用其他值代替 语法格式如下 arrayarray splice array input int offset int length array replacement 说明 array splice 函数把 input数组中由 offset和 length指定的单元去掉 如果提供了 replacement参数 则用 replacement中的值取代被移除的单元 最后返回一个含有被移除单元的数组 4 1 2键名和值的操作 如果给出了 replacement数组 则被移除的单元被此数组中的单元替代 如果指定的 offset和 length的组合结果不会移除任何值 则 replacement数组中的单元将被插入到 offset指定的位置 如果用来替换的值只是一个单元 那么不需要给它加上 array 除非该单元本身就是一个数组 例如 1 1 2 2 3 3 6 print r output1 打印array splice 函数返回的数组情况 输出结果 Array 0 4 1 5 output2 array splice input2 4 0 7 在 input2数组中第4个单元添加值7print r input2 输出结果 Array 0 1 1 2 2 3 3 4 4 7 5 5 6 6 output3 array splice input3 3 2 array 7 8 删除数组 input3第3个单元后面的两个单元并用值7和8代替print r input3 输出结果 Array 0 1 1 2 2 3 3 7 4 8 5 6 4 1 2键名和值的操作 使用array unique 函数可以移除数组中重复的值 返回一个新数组 并不会破坏原来的数组 例如 1 1 2 2 3 5 4 使用array replace 函数 PHP5 3 0 可以使用传递的数组替换第一个数组的元素 array replace 函数的语法格式如下 arrayarray replace array array array array1 array 说明 array replace 函数使用后面数组 array1元素的值替换第一个 array数组的值 4 1 2键名和值的操作 如果一个键存在于第一个数组同时也存在于第二个数组 它的值将被第二个数组中的值替换 如果一个键存在于第二个数组 但是不存在于第一个数组 则会在第一个数组中创建这个元素 如果一个键仅存在于第一个数组 它将保持不变 如果传递了多个替换数组 它们将被按顺序依次处理 后面的数组将覆盖之前的值 例如 pineapple 4 cherry replacements2 array 0 grape basket array replace base replacements replacements2 print r basket 输出结果 Array 0 grape 1 banana 2 apple 3 raspberry 4 cherry 4 1 3数组的遍历和输出 1 使用while循环访问数组while循环 list 和each 函数结合使用就可以实现对数组的遍历 list 函数的作用是将数组中的值赋给变量 each 函数的作用是返回当前的键名和值 并将数组指针向下移动一位 例如 4 1 3数组的遍历和输出 如果数组是多维数组 假设为二维数组 则在while循环中多次使用list 函数 例如 学号姓名专业 while list key value each t array list XH XM ZY value 将二维数组中的单个数组中的值用变量替换 输出变量的值echo XH XM ZY echo 输出表格结尾 4 1 3数组的遍历和输出 输出表格如图4 1所示 4 1 3数组的遍历和输出 2 使用for循环访问数组使用for循环也可以来访问数组 例如 4 1 3数组的遍历和输出 3 使用foreach循环访问数组foreach循环是一个专门用于遍历数组的循环 语法格式如下 foreach array expressionas value 代码段foreach array expressionas key value 代码段 4 1 3数组的遍历和输出 第一种格式遍历给定的array expression数组 每次循环中 当前单元的值被赋给变量 value并且数组内部的指针向前移一步 因此下一次循环将会得到下一个单元 第二种格式做同样的事 只是当前单元的键名也会在每次循环中被赋给变量 key 例如 red blue white foreach coloras value echo value 输出数组的值 foreach coloras key value echo key value 输出数组的键名和值 输出结果为 redbluewhitea red0 blue1 white 4 1 3数组的遍历和输出 例4 1 在页面上生成5个文本框 用户输入学生成绩 提交表单后输出其中分数小于60分的值 并计算平均成绩后输出 新建EX4 1 php文件 输入代码 运行EX4 1 php文件 在文本框中依次输入成绩 56 68 43 85 76 单击 提交 按钮 运行结果如图4 2所示 4 1 4数组的排序 1 升序排序 sort 函数 使用sort 函数可以对已经定义的数组进行排序 使得数组单元按照数组值从低到高重新索引 语法格式如下 boolsort array array int sort flags 说明 sort 函数如果排序成功返回TRUE 失败则返回FALSE 两个参数中 array是需要排序的数组 sort flags的值可以影响排序的行为 sort flags可以取以下6个值 SORT REGULAR 正常比较单元 不改变类型 这是默认值 SORT NUMERIC 单元被作为数字来比较 SORT STRING 单元被作为字符串来比较 SORT LOCALE STRING 根据当前的区域设置把单元当做字符串比较 SORT NATURAL 对每个单元以 自然的顺序 对字符串进行排序 PHP5 4 0中新增 SORT FLAG CASE 能够与SORT STRING或SORT NATURAL合并 OR位运算 不区分大小写排序字符串 PHP5 4 0中新增 4 1 4数组的排序 sort 函数不仅对数组进行排序 同时删除了原来的键名 并重新分配自动索引的键名 例如 5 x 3 5 7 c 1 array2 array 2 c 4 a 1 b if sort array1 print r array1 输出 Array 0 1 1 3 2 5 3 7 elseecho 排序 array1失败 不输出if sort array2 print r array2 输出 Array 0 a 1 b 2 c 4 1 4数组的排序 asort 函数 asort 函数也可以对数组的值进行升序排序 语法格式和sort 类似 但使用asort 函数排序后的数组还保持键名和值之间的关联 例如 lemon a orange b banana c apple asort fruits print r fruits 输出 Array c apple b banana d lemon a orange ksort 函数 ksort 函数用于对数组的键名进行排序 排序后键名和值之间的关联不改变 例如 lemon a orange b banana c apple ksort fruits print r fruits 输出 Array a orange b banana c apple d lemon 4 1 4数组的排序 2 反向排序前面介绍的sort asort ksort 这3个函数都是对数组按升序排序 而它们都对应有一个反向排序的函数 可以使数组按降序排序 分别是rsort arsort krsort 函数 反向排序的函数与升序排序的函数用法相同 rsort 函数按数组中的值降序排序 并将数组键名修改为一维数字键名 arsort 函数将数组中的值按降序排序 不改变键名和值之间的关联 krsort 函数将数组中的键名按降序排序 4 1 4数组的排序 3 对多维数组排序array multisort 函数可以一次对多个数组排序 或根据多维数组的一维或多维对多维数组进行排序 语法格式如下 boolarray multisort array ar1 mixed arg mixed array 本函数的参数结构比较特别 且非常灵活 第一个参数必须是一个数组 接下来的每个参数可以是数组或者是下面列出的排序标志 排序顺序标志 SORT ASC为默认值 按照上升顺序排序 SORT DESC为按照下降顺序排序 排序类型标志 SORT REGULAR为默认值 按照通常方法比较 SORT NUMERIC为按照数值比较 SORT STRING为按照字符串比较 4 1 4数组的排序 使用array multisort 函数排序时字符串键名保持不变 但数字键名会被重新索引 当函数的参数是一个数组列表时 函数首先对数组列表中的第一个数组进行升序排序 下一个数组中值的顺序按照对应的第一个数组的值的顺序排列 以此类推 例如 1 1 2 2 3 3 4 4 5 echo print r ar2 输出 Array 0 10 1 9 2 8 3 7 4 6 4 1 4数组的排序 如果要对多维数组排序 原理与对多个数组排序类似 将多维数组中的各个数组看做是多个数组 例如 4 1 4数组的排序 输出结果如图4 3所示 4 1 4数组的排序 4 对数组重新排序 shuffle 函数 作用是将数组用随机的顺序排列 并删除原有的键名 建立自动索引 例如 shuffle arr 打乱数组顺序foreach arras value echo value 输出新的数组顺序 每次运行 结果都不一样 4 1 4数组的排序 array reverse 函数 作用是将一个数组单元按相反顺序排序 语法格式如下 arrayarray reverse array array bool preserve keys 如果 preserve keys值为TRUE则保留原来的键名 为FALSE则为数组重新建立索引 默认为FALSE 例如 1 2 3 4 ar1 array reverse array ar2 array reverse array TRUE print r ar1 输出 Array 0 4 1 3 2 2 a 1 print r ar2 输出 Array 2 4 1 3 0 2 a 1 4 1 4数组的排序 5 自然排序natsort 函数实现了一个和人们通常对字母 数字 字符串进行排序的方法一样的排序算法 并保持原有键 值的关联 这被称为 自然排序 natsort 函数对大小写敏感 它与sort 函数的排序方法不同 例如 img1 1 img10 2 img12 3 img2 natsort array2 自然排序print r array2 输出 Array 3 img1 2 img2 1 img10 0 img12 4 1 5数组的集合操作 1 数组的差集使用array diff 函数计算数组的差集 语法格式如下 arrayarray diff array array1 array array2 array 说明 对比返回在 array1中但是不在 array2及任何其他参数数组中的值 注意键名保持不变 例如 green red blue red array2 array b green yellow red result array diff array1 array2 print r result 输出 Array 1 blue 4 1 5数组的集合操作 此外 还可以使用键名比较计算数组的差集 用array diff key 函数 PHP5 1 0 例如 1 red 2 green 3 purple 4 array2 array green 5 blue 6 yellow 7 cyan 8 var dump array diff key array1 array2 输出结果如下 array size 2 red int2 purple int4 4 1 5数组的集合操作 2 数组的交集使用array intersect 函数计算数组的交集 语法格式如下 arrayarray intersect array array1 array array2 array 说明 返回一个数组 该数组包含了所有在 array1中也同时出现在 array2及任何其他参数数组中的值 注意键名保持不变 例如 green red blue array2 array b green yellow red result array intersect array1 array2 print r result 输出 Array a green 0 red 4 1 5数组的集合操作 此外 还可以使用键名比较计算数组的交集 用array intersect key函数 PHP5 1 0 例如 1 red 2 green 3 purple 4 array2 array green 5 blue 6 yellow 7 cyan 8 var dump array intersect key array1 array2 输出结果如下 array size 2 blue int1 green int3 4 1 5数组的集合操作 3 数组的并集array merge 函数可以将一个或多个数组合并 一个数组中的值附加在前一个数组的后面 返回作为结果的数组 语法格式如下 arrayarray merge array array1 array array2 array 如果输入的数组中有相同的字符串键名 则该键名后面的值将覆盖前面的一个值 然而 如果数组包含数字键名 后面的值将不会覆盖原来的值 而是附加到后面 如果只给了一个数组并且该数组是数字索引的 则键名会以连续方式重新索引 例如 red 2 4 array2 array a color green 4 result array merge array1 array2 合并两个数组print r result 输出 Array color green 0 2 1 4 2 a 3 4 4 1 6其他操作 1 数组的栈操作根据 后进先出 的特点 出栈操作实际上删除了数组最后一个单元 使用array pop 函数实现 例如 1 1 2 2 3 3 4 数组的入栈操作就是将新单元添加到数组尾部 使用array push 函数实现 语法格式如下 intarray push array array mixed var mixed 4 1 6其他操作 array push 函数将数组 array当成一个栈 并将传入的变量 var加到 array的末尾 array的长度将根据入栈变量的数目而增加 例如 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 4 1 6其他操作 2 取得数组当前单元和each 函数不同 current 函数能够获取数组内部指针指向的单元的值 但不移动数组的内部指针 例如 4 1 6其他操作 3 数组计算使用count sizeof 函数可以计算数组中的元素个数 而使用array count values 函数可以计算数组中一个值出现的次数 语法格式如下 arrayarray count values array input array count values 函数返回一个数组 该数组用 input数组中的值作为键名 该值在 input数组中出现的次数作为值 例如 5 2 2 3 2 4 2 4 1 6其他操作 使用array product 函数 PHP5 1 0 计算数组中所有值的乘积 语法格式如下 numberarray product array array array product 函数以整数或浮点数返回一个数组中所有值的乘积 例如 4 1 7PHP5 4之后版本新增特性 1 返回列array column 函数是PHP5 5 0新引入的 功能是返回数组中指定的一列 其语法格式如下 arrayarray column array input mixed column key mixed index key 说明 返回input数组中键值为column key的列 如果指定了可选参数index key 那么input数组中的这一列的值将作为返回数组中对应值的键 该函数最大的用途在于从多维数组中返回单列数组 例如 输出结果如下 Array 0 John 1 Sally 2 Jane 3 Peter 4 1 7PHP5 4之后版本新增特性 2 间接引用自PHP5 4起可以用数组间接引用函数或方法调用的结果 之前只能通过一个临时变量完成 从PHP5 5起还可以用数组间接引用一个数组原型 例如 4 1 8实例 处理表格数据 例4 2 接收用户输入的学生学号 姓名 成绩等信息 将接收到的信息存入数组并按照成绩升序排序 之后再以表格的形式输出 如果存在学号为081101的学生 则输出其姓名与成绩 新建EX4 2 php文件 输入代码 运行后在页面的表格文本框中依次输入下列5行值 081103王燕68081113严红72081106李方方90081101王林68081221刘燕敏82 4 1 8实例 处理表格数据 输入后单击 提交 按钮 运行结果如图4 4所示 4 2字符串操作 4 2 1字符串的定义与显示字符串的显示可以使用echo 和print 函数 这在之前已经介绍过 echo 函数和print 函数并不是完全一样 二者还存在一些区别 print 具有返回值 返回1 而echo 则没有 所以echo 比print 要快一些 也正是因为这个原因 print 能应用于复合语句中 而echo 则不能 例如 另外 echo可以一次输出多个字符串 而print则不可以 例如 echo I love PHP 输出 IlovePHP print I love PHP 将提示错误 4 2 2字符串的格式化 函数printf 将一个通过替换值建立的字符串输出到格式字符串中 这个命令和C语言中的printf 函数结构和功能一致 语法格式如下 intprintf string format mixed args 第一个参数 format是格式字符串 args是要替换进来的值 格式字符串里的字符 指出了一个替换标记 格式字符串中的每一个替换标记都由一个百分号组成 后面可能跟有一个填充字符 一个对齐方式字符 字段宽度和一个类型说明符 字符串的类型说明符为 s 例如 4 2 3常用的字符串函数 1 计算字符串的长度在操作字符串时经常需要计算字符串的长度 这时可以使用strlen 函数 语法格式 intstrlen string string 该函数返回字符串的长度 1个英文字母长度为1个字符 1个汉字长度为2个字符 字符串中的空格也算一个字符 例如 4 2 3常用的字符串函数 2 将字符串改变大小写使用strtolower 函数可以将字符串全部转化为小写 使用strtoupper 函数将字符串全部转化为大写 例如 使用ucfirst 函数可以将字符串的第一个字符改成大写 使用lcfirst 函数 PHP5 3 0 将字符串的第一个字符改成小写 ucwords 函数则可以将字符串中每个单词的第一个字母改成大写 例如 4 2 3常用的字符串函数 3 字符串裁剪实际应用中 字符串经常被读取 以及用于其他函数的操作 当一个字符串的首和尾有多余的空白字符 如空格 制表符等 参与运算时就可能产生错误的结果 这时可以使用trim rtrim ltrim函数来解决 它们的语法格式如下 stringtrim string str string charlist stringrtrim string str string charlist stringltrim string str string charlist 4 2 3常用的字符串函数 可选参数 charlist PHP4 1 0引入 是一个字符串 指定要删除的字符 如果省略则默认删除的字符如表4 1所示 4 2 3常用的字符串函数 ltrim rtrim trim 函数分别用于删除字符串 str中最左边 最右边和两边的与 charlist相同的字符 并返回剩余的字符串 例如 4 2 3常用的字符串函数 4 字符串的查找PHP中用于查找 匹配或定位的函数非常多 这里只介绍比较常用的strstr 函数和stristr 函数 这两者的功能 返回值都一样 只是stristr 函数不区分大小写 strstr 函数的语法格式如下 stringstrstr string haystack mixed needle bool before needle false 4 2 3常用的字符串函数 strstr 函数还有一个同名函数strchr 例如 4 2 3常用的字符串函数 5 字符串与ASCII码在字符串处理中 使用ord 函数可以返回字符的ASCII码 也可以使用chr 函数返回ASCII码对应的字符 例如 4 2 4字符串的比较 使用 和 比较的两个对象不一定要类型相等 整型也可以和字符串比较 如 123 123 返回TRUE 而 和 比较的对象类型要严格相同才可能返回TRUE 如 123 123 返回FALSE 经常使用的字符串比较函数有 strcmp strcasecmp strncmp 和strncasecmp 语法格式如下 intstrcmp string str1 string str2 intstrcasecmp string str1 string str2 intstrncmp string str1 string str2 int len intstrncasecmp string str1 string str2 int len 这4个函数都用于比较字符串的大小 如果 str1比 str2大 则它们都返回大于0的整数 如果 str1比 str2小 则返回小于0的整数 如果两者相等 则返回0 4 2 4字符串的比较 不同的是 strcmp 函数用于区分大小写的字符串比较 strcasecmp 函数用于不区分大小写的比较 strncmp 函数用于比较字符串的一部分 从字符串的开头开始比较 len是要比较的长度 strncasecmp 函数的作用和strncmp 函数一样 只是strncasecmp 函数不区分大小写 例如 4 2 5字符串的替换 字符串替换操作中最常用的就是str replace 函数 语法格式如下 mixedstr replace mixed search mixed replace mixed subject int 输出 Ilovelucy 4 2 5字符串的替换 PHP另外还有一个substr replace 函数实现替换字符串的一部分 语法格式如下 mixedsubstr replace mixed string string replacement int start int length start是开始替换的位置的偏移量 从0开始计算 如果为0或是一个正值 就是从字符串开始处计算的偏移量 如果是负值则是从字符串末尾计算的偏移量 length是可选参数 表示要替换的长度 如果不给定则从 start位置开始一直到字符串结束 如果 length为0 则替换字符串会插入到原字符串中 如果 length是正值 则表示要用替换字符串替换掉的字符串长度 如果 length是负值 表示从字符串末尾开始到 length个字符为止停止替换 例如 4 2 6字符串与HTML 1 将字符转换为HTML实体形式HTML代码都是由HTML标记组成的 如果要在页面上输出这些标记的实体形式 如 就需要使用一些特殊的函数将一些特殊的字符 如 等 转换为HTML的字符串格式 函数htmlspecialchars 可以将字符转化为HTML的实体形式 该函数转换的特殊字符及转换后的字符如表4 2所示 4 2 6字符串与HTML htmlspecialchars 函数的语法格式如下 stringhtmlspecialchars string string int quote style string charset bool double encode 参数 string是要转换的字符串 quote style charset和 double encode都是可选参数 quote style指定如何转换单引号和双引号字符 取值可以是ENT COMPAT 默认值 只转换双引号 ENT NOQUOTES 都不转换 和ENT QUOTES 都转换 等 charset是字符集 默认为UTF 8 PHP5 4 0 参数 double encode如果为FALSE则不转换成HTML实体 默认为TRUE 例如 test echohtmlspecialchars new 页面中输出 test echohtmlspecialchars new ENT NOQUOTES 页面中输出 test 4 2 6字符串与HTML 2 将HTML实体形式转换为特殊字符使用htmlspecialchars decode 函数可以将HTML的实体形式转换为HTML格式 这和htmlspecialchars 函数的作用刚好相反 Html entity decode 函数可以把所有HTML实体形式转换为HTML格式 和htmlentities 函数的作用相反 例如 4 2 6字符串与HTML 3 换行符的转换在HTML文件中使用 n 显示HTML代码时不能显示换行的效果 这时可以使用nl2br 函数 这个函数可以用HTML中的 标记代替字符串中的换行符 n 例如 4 2 7其他字符串函数 1 字符串与数组 1 字符串转化为数组 使用explode 函数可以用指定的字符串分割另一个字符串 并返回一个数组 语法格式如下 arrayexplode string separator string string int limit 说明 此函数返回由字符串组成的数组 每个元素都是 string的一个子串 它们被字符串 separator作为边界点分割出来 例如 使用 1 空格 2 分割 3 字符串 4 2 7其他字符串函数 2 数组转化为字符串 使用implode 函数可以将数组中的字符串连接成一个字符串 语法格式如下 stringimplode string glue array pieces pieces是保存要连接的字符串的数组 glue是用于连接字符串的连接符 例如 4 2 7其他字符串函数 2 字符串加密函数PHP提供了crypt 函数完成加密功能 语法格式如下 stringcrypt string str string salt 从PHP5 3 0开始 PHP包含了它自己的MD5Crypt实现 包括标准DES算法 扩展的DES算法以及Blowfish算法 如果系统缺乏相应的实现 那么PHP将使用它自己的实现 以便在默认状态下获得更高的安全性 例如 4 2 7其他字符串函数 3 字符串转换函数PHP5 4 0新增了一个hex2bin 函数 其功能是转换十六进制字符串为二进制字符串 语法格式为 stringhex2bin string data 其中 参数 data是十六进制表示的数据 此函数返回给定数据的二进制表示或者在失败时返回FALSE 例如 输出结果如下 string examplehexdata length 16 4 2 8实例 留言簿内容处理 例4 3 新建一个留言簿 留言簿上有Email地址和用户的留言 提取客户的Email地址和留言 要求Email地址中 符号前不能有点 或逗号 将Email地址中 符号前的内容作为用户的用户名 并将用户留言中第一人称 我 修改为 本人 新建EX4 3 php文件 输入代码 4 2 8实例 留言簿内容处理 运行程序 在Email栏输入 zhou 在留言栏输入 我觉得PHP是个很有趣的东西 我要好好钻研钻研 我要成为PHP网页制作高手 单击 提交 按钮 运行结果如图4 5所示 4 3正则表达式 4 3 1基础知识使用正则表达式可以完成以下功能 测试字符串的某个模式 例如 可以对一个输入字符串进行测试 看在该字符串中是否存在一个Email地址模式或一个信用卡号码模式 这称为数据有效性验证 替换文本 可以在文档中使用一个正则表达式来标志特定字符串 然后可以全部将其删除 或者替换为别的字符串 根据模式匹配从字符串中提取一个子字符串 可以用来在文本或输入字段中查找特定字符串 4 3 1基础知识 1 编写正则表达式要编写正则表达式 首先要了解正则表达式的语法 正则表达式是由普通字符和元字符组成的 通过元字符和普通字符的不同组合 可以写出不同意义的正则表达式 表4 3列出了正则表达式支持的语法格式 4 3 1基础知识 以下是几个简单的正则表达式的例子 A Za z0 9 表示所有的大写字母 小写字母及0到9的数字 hello 表示以hello开始的字符串 world 表示以world结尾的字符串 at 表示以除 n 外的任意单个字符开头并以 at 结尾的字符串 如 cat nat 等 a zA Z 表示一个以字母开头的字符串 hi 2 表示字母h后跟着两个i即hii go 表示至少含有一个 go 字符串的字符串 如 gogo 4 3 1基础知识 2 Perl兼容的语法扩充Perl兼容的正则表达式的模式类似于Perl中的语法 表达式必须包含在定界符中 除数字 字母 反斜线外的任何字符都可以作为定界符 例如 表达式 i php 34 中正斜线 就是定界符 另外 如果定界符要出现在表达式中需要使用转义符转义 Perl兼容的正则表达式除了支持表4 3列出的语法格式外 还可以通过转义字符 和一些特殊字母的组合实现某些特殊的语法 表4 4列出了这些组合及它们的作用 通过表中的组合可以使正则表达式变得简洁 4 3 2PHP中正则表达式的应用 1 字符串匹配字符串的匹配是正则表达式的主要应用之一 在PHP提供的正则表达式函数中 使用preg match 函数进行字符串的匹配查找 语法格式如下 intpreg match string pattern string subject array matches int flags int offset 说明 在 subject字符串中搜索与 pattern给出的正则表达式相匹配的内容 preg match 函数返回 pattern所匹配的次数 不是0次 没有匹配 就是1次 因为preg match 函数在第一次匹配之后将停止搜索 例如 4 3 2PHP中正则表达式的应用 函数如果提供了 matches参数 则其会被搜索的结果所填充 matches 0 将包含与整个模式匹配的文本 matches 1 将包含与第一个捕获的括号中的子模式所匹配的文本 以此类推 例如 4 3 2PHP中正则表达式的应用 PHP还有一个字符串匹配函数preg match all 语法格式如下 intpreg match all string pattern string subject array matches int flags int offset preg match all 函数参数 flags的值可以取以下三种 PREG PATTERN ORDER 默认项 表示 matches 0 为全部模式匹配的数组 matches 1 为第一个括号中的子模式所匹配的字符串组成的数组 以此类推 PREG SET ORDER 如果设定此标记 则 matches 0 为第一组匹配项的数组 matches 1 为第二组匹配项的数组 以此类推 PREG OFFSET CAPTURE PREG OFFSET CAPTURE可以和其他两个标记组合使用 如果设定本标记 对每个出现的匹配结果也同时返回其附属的字符串偏移量 4 3 2PHP中正则表达式的应用 例如 boldtextclickme preg match all html matches for i 0 i echo part1 htmlspecialchars matches 1 i echo part2 htmlspecialchars matches 3 i echo part3 htmlspecialchars matches 4 i 输出结果如下 matched boldtextpart1 part2 boldtextpart3 matched clickmepart1 part2 clickmepart3 4 3 2PHP中正则表达式的应用 2 字符串的替换使用preg replace 函数在字符串中查找匹配的子字符串 并用指定字符串替换子字符串 语法格式如下 mixedpreg replace mixed pattern mixed replacement mixed subject int limit int 输出 p phpchina p 4 3 2PHP中正则表达式的应用 函数语法格式中 如果 subject是个数组 则会对 subject中的每个项目执行搜索和替换 并返回一个新数组 如果 pattern和 replacement都是数组 则preg replace 函数会依次从 pattern中取出值来对 subject进行搜索和替换 例如 4 3 2PHP中正则表达式的应用 3 字符串的分割preg split 函数可以使用正则表达式作为边界分割一个字符串 并将子字符串存入一个数组返回 语法格式如下 arraypreg split string pattern string subject int limit int flags limit是可选参数 如果指定则最多返回 limit个字串 如果省略则默认为 1 没有限制 flags的值可以是以下三种 PREG SPLIT NO EMPTY 如果设定本标记 则函数只返回非空的字符串 PREG SPLIT DELIM CAPTURE 如果设定本标记 定界符模式中的括号表达式的匹配项也会被捕获并返回 PREG SPLIT OFFSET CAPTURE 如果设定本标记 对每个出现的匹配结果也同时返回其附属的字符串偏移量 例如 hi 1 i 2 am 3 a 4 phper 4 3 2PHP中正则表达式的应用 4 返回匹配的数组单元使用preg grep 函数可以根据条件查找指定的数组 并将符合条件的数组单元返回 语法格式如下 arraypreg grep string pattern array input int flags 函数返回一个数组 数组包含 input数组中与 pattern相匹配的数组单元 flags是可选参数 值可以是PREG GREP INVERT 表示返回输入数组中不匹配给定 pattern的单元 例如 name 1 number newarray2 preg grep e array 匹配含有字母 e 的单词print r newarray2 输出Array 0 name 1 number 2 project 4 3 3实例 验证表单内容 例4 4 使用正则表达式验证用户输入的表单内容是否满足格式要求 新建EX4 4 Hpage php文件 输入代码 新建EX4 4 Ppage php文件 输入以下代码 4 3 3实例 验证表单内容 EX4 4 Hpage php文件运行效果如图4 6所示 用户需要输入用户名 密码 手机号和邮箱地址 需要遵守的规则在表单中已经列出 输入完成后单击 注册 按钮 如果格式正确则提示 注册成功 不正确则提示 注册失败 格式不对
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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