字符串与正则表达式.ppt_第1页
字符串与正则表达式.ppt_第2页
字符串与正则表达式.ppt_第3页
字符串与正则表达式.ppt_第4页
字符串与正则表达式.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

4 字符串与正则表达式 4 1字符串处理 4 2正则表达式应用 4 字符串与正则表达式 4 1字符串处理 4 1 1字符串的输出print 输出一个字符串 intprint stringarg arg指定要输出的字符串 函数返回值总是1 print不是真正的函数 而是一个语法结构 因此其参数可以不使用括号 printf 输出一个格式化的字符串 intprintf stringformat mixedargs mixed args指定要输出的参数 不同参数之间以逗号分隔 format指定输出的格式 以 开始到转换字符为止 sprintf 返回一个格式化的字符串 stringsprintf stringformat mixedargs mixed 参数同printf 4 1字符串处理 4 1 2大小写转换strtolower 把一个字符串中的所有字母都转换为小写形式 stringstrtolower stringstr strtoupper 把一个字符串中的所有字母都转换为大写形式 stringstrtoupper stringstr ucfirst 把一个字符串中的首字母转换为大写形式 stringucfirst stringstr ucwords 把一个字符串中所有单词的首字母都转换为大写形式 stringucwords stringstr 4 1字符串处理 4 1 3从字符串的左或右删除空格trim 去除字符串开始位置和结束位置的空格或其他字符 并返回处理后的字符串 stringtrim stringstr stringcharlist ltrim 去除字符串左边的空格或其他字符并返回处理后的字符串 stringltrim stringstr stringcharlist rtrim 去除字符串右边的空格或其他字符并返回处理后的字符串 stringrtrim stringstr stringcharlist 参数str 要处理的字符串 参数charlist 可选 用于指定要去除的字符 也可以用 指定要删除的字符的范围 4 1字符串处理 4 1 4求字符串长度strlen 返回字符串的长度 intstrlen stringstr 参数str表示待求长度的字符串 说明 中文字符和中文标点符号各占2个字节 英文字母和英文标点符号各占1个字节 有时遇到strlen 计算的一个汉字占3个字节的问题 原因如下 与系统所采用的字符编码方式有关 1 utf 8如果系统采用的是utf 8 那么strlen 汉字 6 即一个汉字占用3个字节 2 gb2312如果系统采用的是gb2312 则strlen 汉字 4 即一个汉字占用2个字节 实训1 创建一个php动态网页 1 创建原始字符串1 你看不到我 我是空格 计算原始字符串1的长度 去除原始字符串1两端的空格 并重新计算该字符串的长度 2 创建原始字符串2 kingdombda 计算原始字符串2的长度 去除原始字符串左边的 去除右边的从 a 到 d 范围内的字符 重新输出该字符串 重新计算该字符串的长度 4 1字符串处理 4 1 5HTML文本格式化nl2br 把字符串中的所有换行符 n 转换为HTML换行标记并返回经过处理的字符串 stringnl2br stringstr htmlspecialchars 把字符串中的一些特殊字符替换为HTML文本实体并返回经过处理的字符串 stringhtmlspecialchars stringstr intquote style stringcharset htmlentities 把字符串中的一些HTML标签转换为HTML实体并返回经过处理的字符串 stringhtmlentities stringstr intquote style stringcharset strip tags 从字符串中去除所有PHP和HTML标记并返回经过处理的字符串 stringstrip tags stringstr stringallowable tags 参数allowable tags用于指定要保留的PHP或HTML标记 4 1字符串处理 4 1 5HTML文本格式化stringhtmlspecialchars stringstr intquote style stringcharset stringhtmlentities stringstr intquote style stringcharset 以上两个函数的作用十分类似 格式化HTML代码 参数quote style指定字符转换的方式 可选用以下预定义常量之一 ENT COMPAT 表示只转换双引号 默认 ENT QUOTES 表示转换单引号和双引号 ENT NOQUOTES 表示不转换任何一种引号 参数charset指定转换过程中使用的字符集 如 GB2312 以上两个函数都可以实现以下5个特殊字符的转换 区别 htmlspecialchars只转化以上5个特殊字符 而htmlentities却会转化所有的html代码 连同里面的它无法识别的中文字符也给转化了 4 1字符串处理 4 1 5HTML文本格式化测试页面 echohtmlentities str echo str 测试页面 echohtmlspecialchars str 结论 htmlentities函数把中文字符也转化了 建议字符串含有中文时使用htmlspecialchars函数 实训2 创建一个PHP动态网页 要求原样显示以下HTML代码 PHP动态网页开发 4 1字符串处理 4 1 6添加或去除反斜线addslashes 为sql语句等字符串中需要添加反斜线 转义符 的地方添加反斜线 转义符 并返回处理后的字符串 stringaddslashes stringstr stripslashes 去除字符串中的反斜线并返回处理后的字符串 stringstripslashes stringstr 4 1字符串处理 4 1 6字符串的连接与分割implode 将数组元素连接成一个字符串并返回该字符串 stringimplode stringglue arraypieces 参数glue指定用于连接数组元素的符号 参数pieces表示要连接成一个字符串的数组 explode 使用一个字符串分割另一个字符串 arrayexplode stringseparator stringstr intlimit 参数separator指定分隔符 参数str表示待分割的字符串 参数limit 表示返回的数组最多包含limit个元素 最后的元素将包含str的剩余部分 若limit为负数 则返回除最后limit个元素之外的所有元素 4 1字符串处理 4 1 7字符串的连接与分割strtok 把一个字符串按照另一个字符串的值分割成若干个字符串 stringstrtok stringstr stringtoken 参数str表示待分割的字符串 参数token指定所使用的分隔符 只有第1次分割时 需要通过第一个参数来指定被分割的字符串 当完成第1次分割时 将自动记录下第1次分割后的指针位置 如果继续调用该函数 则会从新的指针位置进行分割 因此 从第2次函数调用开始 可以省略第1个参数 若要使指针返回初始状态 则应将被分割字符串作为第1个参数传递个strtok 函数 4 1字符串处理 4 1 8比较字符串strcmp 比较两个字符串的大小 intstrcmp stringstr1 stringstr2 如果两个字符串完全匹配 则返回0 如果str1str2 则返回正数 strncmp 与strcmp 类似 比较两个字符串的前n个字符 intstrncmp stringstr1 stringstr2 intn n为从头开始进行比较的字符数返回值与strcmp 类似 4 1字符串处理 4 1 9查找字符串strpos 查找子串needle在字符串haystack中首次出现的位置 区分大小写 intstrpos stringhaystack mixedneedle intoffset stripos 与strpos 功能基本相同 只是不区分大小写 intstripos stringhaystack mixedneedle intoffset strrpos 查找子串needle在字符串haystack中最后一次出现的位置 intstrrpos stringhaystack mixedneedle intoffset 参数haystack表示原字符串 参数needle表示待查找的子串 若needle不是字符串类型 则自动转换为整型 并作为字符的值使用 参数offset 表示从字符串haystack的第offset个字符处开始查找 第1个字符的位置为0 若找到needle 则以数字形式返回其在haystack中的位置 若找不到 则返回false 4 1字符串处理 4 1 10替换字符串str replace 在一个字符串中查找一个子串的所有出现并使用新字符串替换该子串 mixedstr replace mixedsearch mixedreplace mixedsubject int count str irepalce 与str replace 函数的功能基本相同 只是不区分大小写 mixedstr ireplace mixedsearch mixedreplace mixedsubject int count 参数search表示要被替换的目标子串 参数replace表示用于替换的新子串 参数subject表示原字符串 参数count表示被替换的次数 前3个参数可以是字符串或数组 不同组合的情况见课本P84 4 1字符串处理 4 1 10替换字符串substr replace 替换子串的文本内容并返回替换后的字符串 mixedsubstr replace mixedstr stringreplacement intstart intlength 参数str表示原字符串 参数replacement表示用于替换原有内容的新字符串 参数start指定执行替换的起始位置 若start为正 则从start偏移处开始替换 若start为负 则从字符串str末尾的第start个字符处开始替换 参数length指定替换范围的大小 若省略参数length 则从原字符串起始处开始替换 若length为正 表示字符串str中被替换的长度为length 若length为负 则从字符串str末尾向前数 length个字符 在此处停止替换 4 1字符串处理 4 1 11获取子串substr 返回从字符串str的start偏移处开始 长度为length的子串 stringsubstr stringstr intstart intlength 参数start 若start为非负数 则从start偏移处开始获取子串 start从0算起 若start为负数 则从字符串str末尾的第 start个字符处开始获取子串 若start超出了字符串str的范围 则返回false 参数length 若省略参数length或其值大于字符串str的长度 则返回从起始位置开始的所有字符 若length为正 则从起始位置开始获取长度为length的子串 若length为负 则表示从字符串str末尾向前忽略的字符串长度 4 1字符串处理 4 1 11获取子串strstr 在字符串haystack中查找一个子串needle的首次出现位置 若找到 则返回从该位置起到字符串haystack结束的所有字符 若找不到 则返回false stringstrstr stringhaystack stringneedle stristr 与strstr 函数功能基本相同 只是不区分大小写 stringstrstr stringhaystack stringneedle strrchr 在字符串haystack中查找字符needle的最后一次出现位置 若找到 则返回从该位置起到字符串haystack结束的所有字符 若找不到 则返回false stringstrrchr stringhaystack stringneedle 实训3 创建一个PHP动态网页 要求从路径 F phpdocs chap04 page4 09 php 中提取出文件名 提示 使用strrpos 和substr 两个函数 4 2正则表达式应用 学习目标 学会编写正则表达式掌握php正则表达式函数的基本应用 4 2正则表达式应用 4 2 1正则表达式概述正则表达式是从左向右去匹配目标字符串的一组模式 它由两种基本的字符类型组成 普通字符 如 A Z 0 9等 和特殊字符 如 等 普通字符 也称为原义字符 这些字符在模式中表示它们自身并匹配目标中相应的字符 特殊字符 也称为元字符 简单地说是用于表示任意数量的任意字符的字符 4 2正则表达式应用 4 2 1正则表达式概述PHP有两种类型的正则表达式 即 Perl兼容正则表达式和POSIX扩展正则表达式 它们的基本结构相同 但语法格式稍微有些区别 Perl兼容正则表达式中所使用的模式与Perl类似 表达式应被包含在定界符中 通常使用正斜线 作为定界符 任何不是字母 数字或反斜线 的字符都可以作为定界符 如果作为定界符的字符必须被用在表达式本身中 则需要用反斜线转义 如 d 3 d 8 d 4 d 7 POSIX扩展正则表达式则不需要定界符 如 d 3 d 8 d 4 d 7 4 2正则表达式应用 4 2 2编写正则表达式反斜线 这是一个通用转义符转义字符 d任一十进制数字相当于 0 9 D任一非十进制数字相当于 0 9 w任一字母数字字符或下划线字符相当于 a zA Z 0 9 W除字母 数字 下划线以外的字符相当于 a zA Z 0 9 s任一空白字符 如分页 换行 回车 制表符等相当于 f n r t S任一非空白符 xhh十六进制代码为hh的字符 ddd八进制代码为ddd的字符方括号 用于定义一个字符集 连字符 用在字符类中 指出字符的范围 音调符号 有以下两种使用方法 若用在方括号之外 则表示匹配目标字符串的开头 若用在方括号之内 则表示不接受该字符集合 美元符号 表示匹配目标字符串的结尾 4 2正则表达式应用 4 2 2编写正则表达式花括号 用于定义一个数量限定符 m 表示前面的子模式重复m次 如 模式 ab 2 与字符串 abb 匹配 模式 d 3 与 123 801 等3位十进制数字符串匹配 m 表示前面的子模式至少要重复m次 如模式 ab 2 与字符串 abb abbbbb 等匹配 与 ab 不匹配 m n 表示前面的子模式至少重复m次 最多重复n次 如模式 ab 3 5 与字符串 abbb abbbb abbbbb 匹配 问号 表示匹配前面的子模式0次或1次 等价于 0 1 如 模式 do es 可以匹配字符串 do 或 does 星号 表示匹配前面的子模式0次或多次 等价于 0 如 模式 go d 可以匹配字符串 gd god good 及 goood 加号 表示匹配1个或多个数量限定符 等价于 1 如 模式 do g 可以匹配字符串 dog doog dooog 等 但不匹配字符串 dg 4 2正则表达式应用 4 2 2编写正则表达式句点 在默认情况下 匹配除了换行符 n 以外的任意一个字符 如 模式 p p 与字符串 php 匹配 与字符串 photoshop 不匹配 竖线 表示多中选一 如 模式 com net org 与字符串 com net org 的任一个匹配 b 匹配单词边界 边界可以是空格或者特殊字符 如 模式 bis b 与字符串 whatisthat what is 匹配 与 whatisthat 不匹配 B 匹配没有单词边界的内容如 模式 Bis B 与 whatisthat 匹配 与字符串 whatisthat whatis 不匹配 圆括号 用于定义一个子模式的开始和结束 将多选一的分支局部化 如 模式 appl e y 匹配字符串 apple 和 apply 将子模式设定为捕获子模式 括号中的内容放入内存 并可使用 1 2 3 4 依次引用 注意 当出现嵌套圆括号时 以左括号出现的先后顺序来确定引用项的编号 4 2正则表达式应用 4 2 2编写正则表达式 运算顺序 依然遵循从左到右的运算规则 优先级 圆括号因为是内存处理所以最高 重复匹配内容其次 b边界处理第三 条件处理第四最后按照运算顺序计算匹配 4 2正则表达式应用 正则表达式在PHP中的应用 匹配 搜索 替换分割 4 2正则表达式应用 4 2 3正则表达式搜索以下函数是Perl兼容正则表达式函数 preg match 函数执行正则表达式搜索 intpreg match stringpattern stringsubject arraymatches intflags 在subject字符串中搜索与pattern正则表达式相匹配的内容 若有参数matches 则把搜索结果填充到matches数组中 其中 matches 0 存放与整个模式匹配的文本 matches 1 存放与第1个圆括号中的子模式所匹配的文本 matches 2 存放与第2个圆括号中的子模式所匹配的文本 以此类推 若设置参数flags的值为PREG OFFSET CAPTURE 则对每个出现的匹配结果也同时返回其附属的字符串偏移量 此时matches是二维数组 其每个内层数组含有两个元素 第1个元素匹配字符串 第2个元素匹配其偏移量 返回值是pattern匹配的次数 该函数在第1次匹配之后就停止搜索 返回值为1表示匹配成功 0表示没有匹配 false表示运行出错 4 2正则表达式应用 4 2 3正则表达式搜索以下函数是Perl兼容正则表达式函数 preg match all 函数执行全局正则表达式搜索 intpreg match all stringpattern stringsubject arraymatches intflags 本函数在字符串subject中搜索所有与pattern给出的正则表达式匹配的内容并将结果以flags指定的顺序放到数组matches中 参数flags说明见课本P90 4 2正则表达式应用 4 2 3正则表达式搜索以下两个函数是POSIX兼容正则表达式函数 ereg 函数执行正则表达式搜索 boolereg stringpattern stringstring arrayregs eregi 函数以不区分大小写方式执行正则表达式搜索 booleregi stringpattern stringstring arrayregs 实训4 创建一个php动态网页 借助preg match或ereg函数 把日期字符串 5 16 2013 转换为 2013年5月16日 4 2正则表达式应用 4 2 4正则表达式替换以下函数中 前者是P

温馨提示

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

评论

0/150

提交评论