4.3 字符串与PHP字符串函数库
4.3.1 初识字符串
字符串是由零个或多个字符构成的一个集合。字符包含以下几种类型。
1)数字类型。例如1、2、3等。
2)字母类型。例如a、b、c、d等。
3)特殊字符。例如#、$、%、^、&等。
4)不可见字符。例如\n(换行符)、\r(回车符)、\t(Tab字符)等。
其中,不可见字符是比较特殊的一组字符,是用来控制字符串格式化输出的,在浏览器上不可见,只能看到字符串输出的结果。
4.3.2 去掉字符串首尾空格和特殊字符
1.ltrim()函数
ltrim()函数用于去除字符串左边的空白字符或者指定字符串。语法如下:
参数str是要操作的字符串对象,参数charlist为可选参数,需要从指定的字符串中删除哪些字符,如果不设置该参数,则所有的可选字符都将被删除。参数charlist的可选值:\0(NULL,空值)、\t(tab,制表符)、\n(换行符)、\x0B(垂直制表符)、" "(空白字符)、\r(回车符)。除了以上默认的过滤字符列表外,也可以在Charlist参数中提供要过滤的特殊字符。
2.rtrim()函数
rtrim()函数用于去除字符串右边的空白字符和特殊字符。语法如下:
参数str指定操作的字符串对象,参数charlist为可选参数,指定需要从指定的字符串中删除哪些字符,如果不设置该参数,则所有的可选字符都将被删除。参数charlist的可选值同上。
3.trim()函数
trim()函数用于去除字符串开始位置和结束位置的空白字符,并返回去掉空白字符后的字符串。语法如下:
参数str是操作的字符串对象,参数charlist为可选参数,指定需要从指定的字符串中删除哪些字符,如果不设置该参数,则所有的可选字符都将被删除。参数charlist的可选值同上。
4.3.3 截取字符串
在PHP中对字符串进行截取应用substr()函数。对字符串进行截取是一个最为常用的方法。
substr()函数从字符串中按照指定位置截取一定长度的字符。如果使用一个正数作为子串起点来调用这个函数,将得到从起点到字符串结束的这个字符串;如果使用一个负数作为子串起点来调用,将得到一个原字符串尾部的一个子串,字符个数等于给定负数的绝对值。语法如下:
注:参数说明如下。
参数str:用来指定字符串对象。
参数start:用来指定开始截取字符串的位置,如果参数start为负数,则从字符串的末尾开始截取。
参数length:为可选项,指定截取字符的个数,如果length为负数,则表示取到倒数第length个字符。
注意:substr函数中参数start的指定位置是从0开始计算的,即字符串中的第一个字符表示为0。
【例4-10】在开发Web程序时,为了保持整个页面的合理布局,经常需要对一些(例如:公告标题、公告内容、文章的标题、文章的内容等)超长输出的字符串内容进行截取,并通过“……”代替省略内容:
运行结果为:8月8日21时19分,四川省阿坝州九……
说明:
1)在应用substr()函数对字符串进行截取时,应该注意页面的编码格式,切忌页面编码格式不能设置为UTF-8。如果页面是UTF-8编码格式,那么应该使用iconv_substr()函数进行截取。
2)strlen()函数获取字符串的长度,汉字占两个字符,数字、英文、小数点、下划线和空格占一个字符。
通过strlen()函数还可以检测字符串长度。例如,在用户注册中,通过strlen()函数获取用户填写用户名的长度,然后判断用户名长度是否符合指定的标准。关键代码如下:
4.3.4 分割、合成字符串
分割字符串将指定字符串中的内容按照某个规则进行分类存储,进而实现更多的功能。例如:在电子商务网站的购物车中,可以通过特殊标识符“@”将购买的多种商品组合成一个字符串存储在数据表中,在显示购物车中的商品时,通过以“@”作为分割的标识符进行拆分,将商品字符串分割成N个数组元素,最后通过for循环语句输出数组元素,即输出购买的商品。
字符串的分割使用explode()函数,按照指定的规则对一个字符串进行分割,返回值为数组。语法如下:
explode()函数的参数说明如下:
separator:必要参数,指定的分割符。如果separator为空字符串(""),explode()将返回false。如果separator所包含的值在str中找不到,那么explode()函数将返回包含str单个元素的数组。
str:必要参数,指定将要被进行分割的字符串。
limit:可选参数,如果设置了limit参数,则返回的数组包含最多limit个元素,而最后的元素将包含string的剩余部分;如果limit参数是负数,则返回除了最后的limit个元素外的所有元素。
【例4-11】在电子商务网站的购物车中,通过特殊标识符“@”将购买的多种商品组合成一个字符串存储在数据表中,在显示购物车中的商品时,以“@”作为分割的标识符进行拆分,将商品字符串分割成 N个数组元素,最后通过foreach循环语句输出数组元素,即输出购买的商品,代码如下:
运行结果如下:
4.3.5 md5加密函数
md5加密函数计算字符串的md5哈希值,该函数是一种编码的方式,但是不能解码。其语法如下:
参数str为被加密的字符串;参数raw_output为布尔型,TRUE表示加密字符串以二进制格式返回。
例如:应用md5()函数对字符串“中国梦”进行编码。
运行结果为:59110b5db0d04fe20cd8e51408e389fa。