第 7 章 字符串

38
第7第 第第第 • 第第第第 PHP 第第第第第第第 第第第第第 第第 第第第第第第第第第第 ,、 、, 第第第第第第第第第第 第第第第第第第第第第第第 第第第第第第第第第第第 。, 第第第第第第第

Upload: dennis-hickman

Post on 15-Mar-2016

120 views

Category:

Documents


7 download

DESCRIPTION

第 7 章 字符串. 字符串在 PHP 中的应用很广泛,在数据存储、传输、文件读写等很多方面,都能使用到字符串函数。与字符串有关的函数很多,本章主要介绍与字符串相关的函数的使用。. 7.1 字符串显示函数. 在本书 2.1 节中,就对字符串显示函数进行了介绍。虽然显示字符串函数很简单,但是其在程序运行过程中,要注意的问题很多。本节将重新回顾这些函数,并介绍更多的显示函数,也将介绍如何将字符串输出到缓冲区。. 7.1.1 输出字符串到屏幕. echo() 与 print() 函数已经介绍过其使用方法。下面通过代码,来介绍其他显示字符串的函数,代码如清单所示。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 7 章  字符串

第 7 章 字符串• 字符串在 PHP 中的应用很广泛,在数据存储、传输、文件读写等很多方面,都能使用到字符串函数。与字符串有关的函数很多,本章主要介绍与字符串相关的函数的使用。

Page 2: 第 7 章  字符串

7.1 字符串显示函数• 在本书 2.1 节中,就对字符串显示函数进行了介绍。虽然显示字符串函数很简单,但是其在程序运行过程中,要注意的问题很多。本节将重新回顾这些函数,并介绍更多的显示函数,也将介绍如何将字符串输出到缓冲区。

Page 3: 第 7 章  字符串

7.1.1 输出字符串到屏幕• echo() 与 print() 函数已经介绍过其使用方法。下面通过代码,来介绍其他显示字符串的函数,代码如清单所示。

Page 4: 第 7 章  字符串

7.1.2 字符串与文件• 使用 fprintf() 函数,可以把给定的字符串,格式化后输出到一个句柄中。下面演示 fprintf() 函数的使用方法,代码如清单所示。• 清单 fprintf() 函数的使用• <?php• // 建立一个句柄• $fp = fopen('temp.txt','w');• $money = 12345678.9;• // 使用 fprintf() 函数格式化要输出的字符串 , 并写入文件• $lenght = fprintf($fp, '%01.2f', $money);• // 显示 fprintf() 函数返回的字符串长度• echo $lenght;• ?>

Page 5: 第 7 章  字符串

7.2 字符串与数组• 在本书第 2 章语法部分,介绍了字符串操作符的使用方法。使用字符串操作符,可以把 1 个或多个字符串,连接为 1 个长字符中。本节介绍的函数,主要用于分割和连接字符串。

Page 6: 第 7 章  字符串

7.2.1 将字符串分割成小块• 使用 str_split() 函数可以把指定的字符串,按指定的长度分割,并返回一个数组,数组的单元就是分割后字符串。下面演示 str_split() 函数的使用方法,代码如清单 7.3 所示。• 清单 str_split() 函数的使用方法• <?php• $enString="string";• $cnString = " 这是测试用字符串 ";• echo "<b> 使用默认长度分割字符串 </b>";• echo "<pre>";• print_r(str_split($enString));• echo "</pre>";• echo "<b> 使用指定长度分割字符串 </b>";• echo "<pre>";• print_r(str_split($enString,4));• echo "</pre>";• ?>

Page 7: 第 7 章  字符串

7.2.2 在字符串中插入字符串• 使用 chunk_split() 函数,可以根据参数指定的长度,把字符串分为若干段,在每段字符串后附上指定字符串后,重新连接为一个字符串,并返回。下面演示 chunk_split() 函数的使用方法,代码如清单所示。• 清单 chunk_split() 函数的使用方法• <?php• $String = " 这是测试用字符串 ";• echo "<b> 在字符串的指定长度后 , 添加默认字符串 </b>";• echo "<pre>";• echo chunk_split($String,4);• echo "</pre>";• echo "<b> 在字符串的指定长度后 , 使用 '-' 分割符 </b>";• echo "<pre>";• echo chunk_split($String,4,"-");• echo "</pre>";• ?>

Page 8: 第 7 章  字符串

7.2.3 字符串转化为数组• 使用 explode() 函数,可以按指定的字符,分割另一个字符串,并返回一个数组。下面演示 explode() 函数的使用方法,代码如清单所示。• 清单 explode() 函数的使用方法• <?php• $String = " 使用空格 作为分割 字符串 的例子 ";• $LString = " 使用竖线 | 作为 | 分割字符串 | 的例子 ";• echo "<b> 使用空格来分割字符串 </b>";• echo "<pre>";• print_r(explode(" ",$String));• echo "</pre>";• echo "<b> 使用竖线来分割字符串 </b>";• echo "<pre>";• print_r(explode("|",$LString));• echo "</pre>";• echo "<b> 使用竖线来分割字符串 , 并指定返回的数组数 </b>";• echo "<pre>";• print_r(explode("|",$LString,2));• echo "</pre>";• ?>

Page 9: 第 7 章  字符串

7.2.4 数组转化为字符串• 使用 implode() 函数,可以使用指定的字符串,把一个数组连接为一个字符串。下面演示 implode() 函数的使用方法,代码如清单所示。• 清单 implode() 函数的使用方法• <?php• // 定义一个数组• $array = array(" 我的 "," 故乡 "," 在 "," 远方 ");• // 没有指定字符串的情况下连接数组• $string = implode("",$array);• // 显示连接后的数组• echo $string;• echo "<br>";• // 使用 | 作为连接字符串• $string = implode("|",$array);• // 显示连接后的数组• echo $string;• ?>

Page 10: 第 7 章  字符串

7.3 字符串与空格• 在实际应用中,字符串经常读取,以及其他函数的操作,往往会产生一些多余的空格。这些多余的字符串,参与运算时,会产生错误的结果,而使用相关的字符串函数,可以很简单的解决这个问题。

Page 11: 第 7 章  字符串

7.3.1 去掉字符串左边的字符• 使用 ltrim() 函数,可以去掉指定字符串中右边的指定字符,并返回去掉指字符后的字符串。下面演示 ltrim() 函数的使用方法,代码如清单所示。

Page 12: 第 7 章  字符串

7.3.2 去掉字符串右边的字符• 使用 rtrim() 函数,可以去掉指定字符串中右边的指定字符,并返回去掉指字符后的字符串。下面演示 rtrim() 函数的使用方法,代码如清单所示。

Page 13: 第 7 章  字符串

7.3.3 去掉字符串两边的字符• 使用 trim() 函数,可以去掉指定字符串中左右两边的指定字符,并返回去掉指字符后的字符串。下面演示 trim() 函数的使用方法,代码如清单所示。

Page 14: 第 7 章  字符串

7.4 字符串的比较• 字符串的比较,主要集中在对类型,以及大小写的比较上。在实际应用中,在遇到同一个英文单词,如果其大小写不同,会使用运算结果出错的话,就可以先对字符串进行比较,再根据情况进行下一步的操作。

Page 15: 第 7 章  字符串

7.4.1 字符串比较• 在表达式中,可以使用: == 、 != 、 === 、 !==来进行字符串比较,下面演示比较字符串的方法,代码如清单所示。

Page 16: 第 7 章  字符串

7.4.2 使用函数比较字符串• 使用 strcasecmp() 函数用于两个字符串进行比较大小。而 strcmp() 函数用于区分大小写的字符串的比较大小。下面演示 strcmp() 与 strcasecmp() 函数的使用方法,代码如清单所示。

Page 17: 第 7 章  字符串

7.5 字符串的替换与插入• 本节主要介绍用于替换字符串的函数。替换字符串,即使用指定的字符串,替换掉原来字符串中的相关字符,以组成新的字符串来参与运算。现在流行网站使用的模板系统,都是使用字符替换作为基础的。

Page 18: 第 7 章  字符串

7.5.1 替换当前字符串中的字符• 使用 str_replace() 函数,可以替换掉字符串中的相关字符,而产生一个新字符串。下面演示 str_replace () 函数的使用方法,代码如清单所示。

Page 19: 第 7 章  字符串

7.5.2 在指定位置插入字符串• 使用 substr_replace() 函数,可以在指定位置插入字符串,并返回一个新字符串。下面演示 substr_replace () 函数的使用方法,代码如清单所示。

Page 20: 第 7 章  字符串

7.5.3 字符串替换函数与模板• 根据 str_replace() 函数替换字符串的原理,可以实现简单的模板系统。下面演示简单模板系统的使用,代码如清单所示。

Page 21: 第 7 章  字符串

7.6 字符串与 HTML• 在操作或读取 HTML 文件时,经常会遇到一些特殊的字符串,这些特殊的字符串,都是由 HTML标签转换而成了。在操作带有 HTML标签的字符串或文件时,可以使用相关函数来得到需要的结果。

Page 22: 第 7 章  字符串

7.6.1 把字符转化为 HTML 实体形式• 使用 htmlspecialchars() 函数,可以把 HTML 文件中,类似&、 ' 、 " 、 < 、 > 的字符,转换为 HTML 的实体形式。而使用 htmlentities() 函数据,可以把所有能转化为 HTML实体的字符,都转换为 HTML 实体形式。下面演示 htmlspecialchars() 与 htmlentities() 函数的使用方法,代码如清单所示。

Page 23: 第 7 章  字符串

7.6.2 把 HTML 实体转化为特殊字符• 使用 htmlspecialchars_decode () 函数,可以把 HTML 的实体形式,转换为 HTML 格式。而使用 html_entity_decode () 函数可以把所有转换为 HTML 实体的字符,转换为 HTML 格式。下面将演示这两个函数的使用方法,代码如清单所示。

Page 24: 第 7 章  字符串

7.6.3 换行符的转换• 在 HTML 文件中使用“ \n”,显示 HTML 代码后,并不能显示换行的效果。这时可以使用 nl2br() 函数,来把字符串的“ \n” 替换为“ <br />”。。下面将演示 nl2br() 函数的使用方法,代码如清单所示。

Page 25: 第 7 章  字符串

7.7 字符串与加密• 字符串的加密与解密,在很多方面都有应用,例如对 URL 字符串的编码与解码。以及在涉及到一些敏感的字符串操作时,如用户名和密码时,也需要对这些字符串进行加密操作,来提高系统的安全性。• 本节介绍函数中,只有与MD5 相关的函数是字符串函数,其他函数应该属于 URL 函数。但是这些URL 函数,同样可以使用于字符串操作,因些把这些函数统一进行介绍。

Page 26: 第 7 章  字符串

7.7.1 使用MIME base64编码加密和解密数据• MIME base64 是一种编码手段,而不是加密手段。字符串按照 base64编码后,可以使二进制数据通过非纯 8-bit 的传输层传输,例如电子邮件的主体。• 本小节主要是利用 base64 的编码与解码函数,来实现类似的字符串加密、解密操作。 base64_encode() 函数,可以对指定的字符串进行编码,并返回一个编码的字符串。 base64_decode() 函数,可以把一个使用 base64_encode() 函数编码的字符串,进行解码处理,并返回一个解码的字符串。下面演示这两个函数的使用方法,代码如清单所示。

Page 27: 第 7 章  字符串

7.7.2 编码和解码 URL• 使用 urlencode() 函数,可以把字符串中除“ -”、“ _”符号与字母以外的字符,转换为“%16 进制数”的形式,而空格将转换为“ +”符号。而使用 urldecode() 函数据,可以还原使用 urlencode() 函数编码的字符串。• urlencode() 与 urldecode() 函数是 URL处理函数,但是也可以用于对字符串过行编码,以方便在网络上进行传输。下面演示这两个函数的使用方法,代码如清单所示。

Page 28: 第 7 章  字符串

7.7.3 字符串与MD5• MD5 是一种加密方法,其可以把指定的字符串,转换为一个唯一的字符串,并且这个过程是不可逆的。使用 md5() 函数,可以返回一个字符串的MD5值,而使用 md5_file() 函数,则可以计算一个文件的MD5值。下面演示这两个函数的使用方法,代码如清单所示。

Page 29: 第 7 章  字符串

7.8 其他字符串函数• 在前边的小节中,介绍了主要的字符串函数后,本小节将向读者介绍一些简单的字符串函数,虽然这些函数使用比较简单,但是在实际应用中,也经常被使用到。

Page 30: 第 7 章  字符串

7.8.1 计算字符串长度• 使用 strlen() 函数,可以计算指定字符串的长度。这个函数经常被使用到,下面介绍其使用方法,代码如清单所示。• strlen() 函数的使用方法• <?php• // 定义一个字符串• $string = "包括 空格的字符串 ";• // 使用 strlen() 函数计算字符串长度• echo strlen($string); // 输出 17• ?>• 注意: strlen() 函数运行后,如果成功将返回要计算字符串的长度,否则返回 0 。

Page 31: 第 7 章  字符串

7.8.2 二进制数据转换成十六进制• 使用 bin2hex() 函数,可以把指定的二进制数,转换为对应的十六进制数。下面介绍 bin2hex() 函数的使用方法,代码如清单所示。• bin2hex() 函数的使用方法• <?php• // 定义一个二进制数• $bin = 0100110;• // 使用 bin2hex() 函数把其转换为十六进制数• $hex = bin2hex($bin);• // 显示返回的值• var_dump($hex); // 输出 :string(10) "3332383430"• ?>• 注意: bin2hex() 函数运行后,将返回一个字符串。

Page 32: 第 7 章  字符串

7.8.3 ASCII码与字符串• 在字符串操作中,可以使用 ord() 函数,返回字符的 ASCII码,也可以使用 chr() 函数,返回 ASCII码对应的字符。下面介绍这两个函数的使用方法,代码如清单所示。• 清单 ord() 与 chr() 函数的使用方法• <?php• echo ord("a");// 输出 :97• echo chr(98);// 输出 :b• ?>• ord() 函数只有一个必选参数,其值是一个字符, ord() 函数运行后,将返回这个字符的 ASCII码。 chr() 函数只有一个必选参数,其值是一个 ASCII码, chr() 函数运行后,将返回这个 ASCII码对应的字符。

Page 33: 第 7 章  字符串

7.8.4 HTML 的标签控制• 使用 strip_tags() 函数,可以过滤掉字符串中的 HTML标签,并返回这个字符串。下面演示 strip_tags() 函数的使用方法,代码如清单所示。• 清单 strip_tags() 函数的使用方法• <?php• // 定义一个带有 HTML 及 PHP标签的字符串• $html = "• <div><font>HTML内容 </font></div>• ";• // 使用 strip_tags() 函数去除字符串中的标签• $string = strip_tags($html);• // 显示返回的字符串• echo $string;// 输出 :HTML内容• // 使用 strip_tags() 函数去除指定的 HTML标签• $string = strip_tags($html,"<font></font>");• // 显示返回的字符串• echo $string; // 输出 :<font>HTML内容 </font>• ?>

Page 34: 第 7 章  字符串

7.8.5 解析URL• parse_url() 并不是字符串函数,其主要使用是用于解析一个 URL ,并返回一个包括相关内容的数组。下面演示 parse_url() 函数的使用方法,代码如清单所示。

Page 35: 第 7 章  字符串

7.8.6 字母大小写的转换• 在处理英文单词时,会遇到大小写不统一的问题,而且有些字符串处理函数,对于字母的大小写是敏感的。要比较两个大小写不同的单词是否想等,可以把要比较的单词,都转成小写或大写字母来实现。在 PHP 中转化字母为大写的函数是 strtoupper() ,把字母转换为小写的函数是 strtolower() ,下面介绍这两个函数的使用方法,代码如清单所示。

Page 36: 第 7 章  字符串

7.9 常见问题• 本章主要介绍了与字符串相关的函数。在脚本运行时,很多地方都涉及到字符串的操作,本节主要介绍的是,字符串操作过程中出现的问题。

Page 37: 第 7 章  字符串

7.9.1 关于模板应用的问题• 前面介绍了一般模板的原理,并演示了一个简单的模板系统。虽然这个模板实现的效果比较简单,但是经过进一步丰富的话,其也可以满足大部分程序的模板化需要。• 关于模板文件,清单 7.14 的代码中的模板是以字符串的形式存在的。在实际应用中,可以把模板内容保存为一个文件,在要使用此模板时,可以使用文件系统函数读取这个文件,并替换其中的字符即可。• 关于模板输出时,可以使用字符串输出函数,直接输出已经替换好的模板字符串,也可以把这个字符串写入一个文件,从而形成静态页面,方便浏览。

Page 38: 第 7 章  字符串

7.9.2 关于 HTML编码的问题• 在处理表单提交的变量时,为了防止用户提交 HTML 代码,可以使用 strip_tags() 函数,去掉指定变量中的 HTML 代码。• 在有些情况下,脚本本身希望用户提交带有 HTML编码的数据,而且需要把这些数据存储,供以后使用。带有 HTML 代码的数据,可以真接保存到文件中,但是大部分情况下,是把用户提交的数据保存到数据库中,由于数据库编码等原因,真接向数据库中存储带有 HTML 代码的数据,会产生错误。这时可以使用 htmlspecialchars() 函数,把 HTML 代码进行转化,再进行存储。• 使用 htmlspecialchars() 函数转换过的 HTML 代码,可以直接保存到数据库中,在使用时可以直接向浏览器输出,这时在浏览器中看到的内容,是 HTML 的实体形式,也可以使用 htmlspecialchars_decode() 函数,把从数据库中取出的代码进行解码,再输出到浏览器中,这时看到的是按 HTML 格式显示的内容。