收藏 分享(赏)

PHP程序设计03.ppt

上传人:gsy285395 文档编号:4529528 上传时间:2019-01-02 格式:PPT 页数:50 大小:259KB
下载 相关 举报
PHP程序设计03.ppt_第1页
第1页 / 共50页
PHP程序设计03.ppt_第2页
第2页 / 共50页
PHP程序设计03.ppt_第3页
第3页 / 共50页
PHP程序设计03.ppt_第4页
第4页 / 共50页
PHP程序设计03.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、第3章 字符串和正则表达式,主 讲:田 旭 Email:,PHP程序设计,本章主要内容,格式化字符串 字符串的连接和分割 字符串的比较 字符串的查找和替换 正则表达式,格式化字符串去除多余的空格,trim()函数 去除字符串开始位置和结束位置的空格或指定字符,并返回去掉相应字符的字符串 string trim ( string str , string charlist ) trim()默认情况下去除的字符有: “ “ ASCII 32 空格 “t“ ASCII 9 Tab字符 “n“ ASCII 10 换行符 “r“ ASCII 13 回车 “0“ ASCII 0 空字节 “x0B“ ASC

2、II 11 垂直制表符 trim函数举例,格式化字符串去除多余的空格,ltrim()函数 去除字符串左边的空格或指定字符,并返回去掉相应字符的字符串 string ltrim ( string str , string charlist ) rtrim()函数 去除字符串右边的空格或指定字符,并返回去掉相应字符的字符串 string rtrim ( string str , string charlist ) ltrim函数举例,格式化字符串格式化字符串显示,字符串大小写转换函数 strtolower()函数 转换为小写 string strtolower ( string str ) str

3、toupper()函数 转换为大写 string strtoupper ( string str ) ucfirst()函数 转换字符串的首字符为大写 string ucfirst ( string str ) ucwords()函数 转换字符串中每个单词的首字符为大写 string ucwords ( string str ),格式化字符串格式化字符串显示,HTML文本格式化 nl2br( )函数 将字符串中的换行符替换为 string nl2br ( string str ) nl2br函数举例,格式化字符串格式化字符串显示,HTML文本格式化 htmlspecialchars( )函数

4、将一些特殊的字符转化为html文本,即不进行html解释,仅当作普通文本 string htmlspecialchars ( string str , int quote_style , string charset ) str-表示要处理的字符串 quote_style-表示进行转换的方式,三种: ENT_COMPAT 只有双引号被转换 ENT_QUOTES 单引号和双引号都被转换 ENT_NOQUOTES 任何一种引号都不被转换charset-表示转换过程中使用的字符集,默认iso-8859-1 htmlspecialchars函数举例,格式化字符串格式化字符串显示,htmlspecial

5、chars( )和htmlentities( ) string htmlentities ( string str , int quote_style , string charset ) htmlentities函数举例,格式化字符串格式化字符串显示,HTML文本格式化 strip_tags( )函数 string strip_tags ( string str , string allowable_tags ) 去掉字符串中所有的PHP和HTML标记,allowadmle_tags可以指定要保留的标记 strip_tags函数举例,格式化字符串格式化字符串显示,格式化字符串方便数据库存储

6、addslashes( )函数 转义数据库中的控制字符,如“ / . string addslashes ( string str ) stripslashes( )函数 去掉被转移的字符串中和斜杠 string stripslashes ( string str ) addslashes函数举例 stripslashes函数举例,字符串的连接和分割,explode( )函数-使用一个字符串分割另一个字符串 array explode(string separator, string str, int limit) 函数返回由字符串组成的数组,每个元素都是str的一个子串,它们被separat

7、or作为边界点分割出来。如设置了limit参数,则返回的数组包含最多limit个元素,而最后那个元素将包含str的剩余部分。 如separator为空字符串“,函数将返回FALSE。如果separator所包含的值在str中找不到,函数将返回包含str单个元素的数组。 如果limit参数是负数,则返回除了最后的limit元素外的所有元素。( PHP 5.1.0中新增) explode函数举例,字符串的连接和分割,implode( )函数 与explode相反,将字符串通过指定的连接符号连成一个字符串 string implode ( string glue, array pieces ) gl

8、ue表示连接字符串的连接符号 pieces表示需要连接成字符串的数组 别名函数join implode函数举例 注意:虽然implode()可以接收两种参数顺序,但是 explode()不行。必须保证separator在str之前。,字符串的连接和分割,strtok( )函数 string strtok ( string str, string token ) 与explode类似,但该函数一次只从字符串中去除一些字符段 str表示需要被分隔的字符串 token为分隔符 strtok函数举例:一次从字符串中取出一个单词,字符串的连接和分割,substr( )函数取子字符串 string sub

9、str(string str, int start,int length) str原始字符串 start子字符串的起始位置,默认从0开始 length子字符串的长度,默认从起始位置到结束 substr函数举例,字符串的比较,strcmp ()函数 strcasecmp()函数 strnatcmp()函数 strnatcasecmp()函数,字符串的比较- strcmp ()函数,strcmp ()函数 int strcmp ( string str1, string str2 ) 如两个字符串完全相同,则返回0;如按字典顺序str1在str2后(大于),则返回一个正数;否则,返回一个负数 st

10、rcasecmp ()函数 int strcasecmp ( string str1, string str2 ) 与strcmp ()函数相同,但不区分大小写strcmp ()函数和strcasecmp ()函数举例,字符串的比较- strnatcmp ()函数,strnatcmp ()函数 int strnatcmp ( string str1, string str2 ) 如两个字符串完全相同,则返回0;如按自然顺序str1在str2后(大于),则返回一个正数;否则,返回一个负数 strnatcasecmp ()函数 int strcasecmp ( string str1, strin

11、g str2 ) 与strnatcmp ()函数相同,但不区分大小写strnatcmp ()函数和strnatcasecmp ()函数举例,字符串的查找和替换,字符串的查找 strstr() stristr() strrstr() 定位字符串 strpos() strrpos() strripos() stripos() 字符串的替换 str_replace() substr_replace() str_ireplace(),字符串的查找strstr(),strstr()函数strchr() string strstr ( string haystack, string needle ) ha

12、ystack原始字符串 needle被查询的关键字:子字符串或字符 在字符串中查找匹配的字符串或字符,如找到一个,则返回从needle开始到整个字符串结束的子字符串;如没有匹配,则返回FALSE;如不止一个匹配,则返回从第一个匹配位置之后的所有子字符串 stristr()同strstr()函数,但不区分大小写 strrstr()同strstr()函数,但从串右边开始 举例,字符串的定位 strpos(),strpos() int strpos ( string haystack, mixed needle , int offset ) 函数返回第一次出现needle的位置,没有找到返回FALS

13、E。 needle出现在第一位,返回值为0 offset表示从haystack的第offset个字符开始查找 strpos() 举例,字符串的定位 strpos(),strrpos()同strpos(),返回最后一次出现被查找的子串的位置 strripos()同strripos(),不区分大小写 stripos()同strripos(),返回第一次出现被查找的子串的位置注意:为避免当strpos()和strrpos()中子串为第一个字符时,返回为0(等价于FALSE)的情况,可采用=来测试返回值。 if( $result = FALSE ),字符串的替换,str_replace() mixed

14、 str_replace ( mixed search, mixed replace, mixed subject , int count ) search表示要被替换的字符串,replace表示替换后的新字符串,subject表示原始字符串,count表示被替换的次数(PHP5) 如search是一个数组,replace是字符串,则将用replace替换数组search中的所有成员;如search和replace都是数组,则用replace的元素替换search对应的成员元素,而replace的元素少于search时,search中剩余的元素将用空字符串代替 str_replace()函数举

15、例 str_ireplace()同str_replace(),对大小写不敏感,字符串的替换,substr_replace() mixed substr_replace (string str, string replacement, int start , int length ) str原始字串,replacement替换后的新字串,start要被替换的目标字符串的起始位置,length表示被替换的目标字符串的长度,省略表示从起始位置之后的所有字符串被替换 start和length可以为负 substr_replace()举例,正则表达式,正则表达式基础 匹配正则表达式模式 锚定一个匹配 匹

16、配单个字符 匹配字符类 替换匹配 不区分大小写的模式 分组模式 预定义字符和字符类 逆向引用 其他常用的正则函数,正则表达式基础,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等。 正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。,正则表达式基础,正则表达式用定界符/将两端括起来 正则表达式:元字符和正则字符

17、元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。 常用的元字符,正则表达式基础,常用的元字符 | () $ * ? + .,匹配正则表达式模式 preg_match,int preg_match ( string pattern, string subject , array matches , int flags ) 在subject字符串中搜索与pattern给出的正则表达式相匹配的内容 如有matches,则其会被搜索的结果所填充。$matches0将包含与整个模式匹配的文本,$matches1将包含与第一个捕

18、获的括号中的子模式所匹配的文本,以此类推。 flags可以是:PREG_OFFSET_CAPTURE (PHP 4.3.0) 如设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。这改变了返回的数组的值,使其中的每个元素也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。 preg_match()返回pattern所匹配的次数。要么是0次(没有匹配)或1次,因为preg_match()在第一次匹配之后将停止搜索。preg_match_all()则相反,会一直搜索到subject的结尾处。如出错preg_match()返回FALSE。,在文本中搜索“php”,搜索单词“web”,

19、从URL中取出域名, 本例将输出: domain name is: ,锚定一个匹配,插入符匹配输入字符串的开始位置 美元符$匹配输入字符串的结尾位置 举例preg_match_6.php,匹配单个字符元字符.,匹配字符类,一个字符类表示与一组方括号 内所定义的那个组的某个部分相匹配的任何一个字符 元字符- 可在一个字符类中指定一个字符的范围 如/a-zA-Z0-9/举例preg_match_8.php注:字符类中的仅作为一个普通字符 如/ab/仅表示匹配字符a, b, ,替换匹配 管道元字符,说明:上例中的()表示是子表达式。,不区分大小写的模式,/i AaBb,分组模式, 0个或者多个前导字

20、符 ? 0个或者1个前导字符 1个或者多个前导字符,预定义字符和字符类,P132,限定符,逆向引用,其他常用的正则函数 preg_replace(),执行正则表达式的搜索和替换 mixed preg_replace ( mixed pattern, mixed replacement, mixed subject , int limit ) 在subject中搜索pattern模式的匹配项并替换为replacement。如指定了limit,则仅替换limit个匹配,如省略limit或者其值为-1,则所有的匹配项都会被替换。 replacement可以包含n 形式或(自 PHP 4.0.4 起)

21、$n形式的逆向引用,首选使用后者。每个此种引用将被替换为与第n个被捕获的括号内的子模式所匹配的文本。n可以从0到99,其中0或$0指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从1开始)以取得子模式的数目。 对替换模式在一个逆向引用后面紧接着一个数字时(即:紧接在一个匹配的模式后面的数字),不能使用1符号来表示逆向引用。如对11,preg_replace()搞不清楚是想要一个1的逆向引用后面跟着一个数字1还是一个11的逆向引用。本例中的解决方法是使用$11。这会形成一个隔离的$1逆向引用,而使另一个1只是单纯的文字。,其他常用的正则函数 preg_replace(),逆向引用后面紧接着

22、数字的用法如果搜索到匹配项,则会返回被替换后的subject,否则返回原来不变的subject。,其他常用的正则函数 preg_replace(),preg_replace()的每个参数(除了limit)都可是一个数组。如pattern和replacement都是数组,将以其键名在数组中出现的顺序来进行处理。如果使用索引来标识哪个pattern将被哪个replacement来替换,应该在调用preg_replace()之前用ksort()对数组进行排序。 例在preg_replace()中使用索引数组如果subject是个数组,则会对subject中的每个项目执行搜索和替换,并返回一个数组。,

23、其他常用的正则函数 preg_replace(),如pattern和replacement都是数组,则preg_replace()会依次从中分别取出值来对subject进行搜索和替换。如果replacement中的值比pattern中的少,则用空字符串作为余下的替换值。如果 pattern是数组而replacement是字符串,则对pattern中的每个值都用此字符串作为替换值。反过来则没有意义了。 /e 修正符使preg_replace()将replacement参数当作PHP代码(在适当的逆向引用替换完之后)。提示:要确保replacement构成一个合法的PHP代码字符串,否则PHP会在

24、报告在包含 preg_replace()的行中出现语法解析错误。 例替换数个值 ,输出: $startDate = 5/27/1999,将HTML转换成文本 *?.*?si“, /去掉javascript “*?si“, / 去掉HTML标记 “(rn)s+“, / 去掉空白字符 “ ?,其他常用的正则函数preg_split(),array preg_split ( string pattern, string subject , int limit , int flags ) 返回一个数组,包含subject中沿着与pattern匹配的边界所分割的子串。 如指定了limit,则最多返回li

25、mit个子串,如果limit是-1,则意味着没有限制,可以用来继续指定可选参数flags。 flags可以是下列标记的任意组合(用按位或运算符 | 组合): PREG_SPLIT_NO_EMPTY 如果设定了本标记,则preg_split()只返回非空的成分。 PREG_SPLIT_DELIM_CAPTURE 如果设定了本标记,定界符模式中的括号表达式也会被捕获并返回。本标记添加于PHP 4.0.5。 PREG_SPLIT_OFFSET_CAPTURE 如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在subject中的偏移量。本标记自PHP 4.3.0 起可用。,其他常用的正则函数preg_split(), 将字符串分割成字符将字符串分割为匹配项及其偏移量 ,本章小结,preg_match_6.php,“); else print(“没发现匹配!“);$str=“ PHP is the best scripting language“; if (preg_match($pattern,$str)print(“发现匹配!“); elseprint(“没发现匹配!“); ?,返回,preg_match_8.php,返回,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > PHP资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报