在程序中对字符串的操作应用是最多的,字符串这种数据类型也是被应用最广泛的,尤其是很多数据的传输,都是以字符串的形式。就说post表单提交的数据,就算是纯数字“100”,它也是以字符串的类型传送给服务端。包括保存在文本文档里的文章,它都是保存在硬盘里的字符串数据。
我们看看常见的字符串函数都有哪些。楠神讲内置函数,仅介绍比较常用和重要的函数。说下这个函数都有什么作用和应用场景,大家心里有个印象就好。有用到的时候,再去看手册就明白了。手册里介绍的都挺详细,有示例,实在不明白,百度上也会搜到更详细的介绍。
addslashes— 使用反斜线引用字符串
这个函数起到转义的作用。比如说字符串里有单引号双引号,可以在它们前面加上个“”,这样就不容易产生歧义。所以这个函数在安全方面起到很重要的作用,重点函数。
chr — 返回指定的字符
ord — 返回字符的 ASCII 码值
ASCII码值与字符相互转换的两个函数。ASCII码值还记得吧?第三章了解计算机编码有详细介绍。
echo — 输出一个或多个字符串
这个语言结构不必说了吧,有数据在浏览器上显示就得用它。
explode — 使用一个字符串分割另一个字符串
可以把字符串分割成数组,比如字符串"piece1 piece2 piece3 piece4 piece5 piece6"变成数组["piece1","piece2","piece3","piece4","piece5","piece6"],很有用的函数。
implode — Join array elements with a string
用一个字符串把数组元素连接起来,正好和explode意思相反,也很重要的函数。
htmlspecialchars — Convert special characters to HTML entities
把HTML标记转成HTML字符实体。起到安全的作用,多用于过滤表单提交HTML标记内容。
md5 — 计算字符串的 MD5 散列值
大名鼎鼎的MD5加密就用这个函数。MD5加密都有所了解吧,它可以把任意一个字符串计算成“长度为32个字符的十六进制数字形式的散列值”,是不可逆的。也就是把加密后的数据解密回原字符串,基本上是不可能的。虽然网上有很多MD5解密,那都属于暴力破解:
MD5查询网站其实就是一个大数据库。里面把常用的几百万条到几百亿条的MD5值计算好存下来。当用户输入一个MD5值的时候。。。。它只是做了一个搜索的动作而已。。。。
现在不都说嘛,密码不让明文保存,必须加密,这个加密大部分网站都用md5加密。网站数据库先存好用户被MD5加密后的密码密文,当用户登录时,只要用户输入的密码加密后和数据库保存的密码密文一样,那就说明用户的密码输入正确。就算网站数据库泄露,别人看到的也只是一堆密文,并不能知道某个用户的具体密码是多少。
MD5容易被暴力破解,所以楠神在写项目时密码这块都属于双重加密,这样写:md5(md5('原密码').'盐')
PHP7版本,手册中不再推荐用md5加密密码,推荐使用password_hash函数加密,password_verify函数验证。
str_repeat — 重复一个字符串
挺有用的。
str_replace — 子字符串替换
可以替换掉一个字符串中的子字符串,“***是大帅哥”,用这个函数可以把“***”替换成其他的字符串。这个函数实用价值很高的。
strpos — 查找字符串首次出现的位置
stripos — 查找字符串首次出现的位置(不区分大小写)
strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
常用,多用于判断或配合substr()获取子字符串。返回值是整数型。
strstr — 查找字符串的首次出现
stristr — strstr()函数的忽略大小写版本
也常用,返回值是字符串型。
strlen — 获取字符串长度
必须要记住的函数,太有用了。
还有一个函数mb_strlen(),这个也是获取字符串长度,它和strlen()有什么区别呢?mb_strlen()有两个参数,第一个是字符串,第二个是编码,看示例:
明白了吧,在utf-8编码下一个汉字占用三个字节,可以把strlen理解为获取的是字节数,mb_strlen才是获取的字符数。
strtolower — 将字符串转化为小写
strtoupper — 将字符串转化为大写
实用价值很高的两个函数。
substr — 返回字符串的子串
mb_substr — Get part of string
用这个函数可以截取字符串,应用非常广泛的函数。和strpos()等四个定位函数配合使用的次数多。
substr()和mb_substr()的区别:
substr()只适用全是一个字节的字符
mb_substr()指定好正确的编码,连汉字都可以截取。
trim — 去除字符串首尾处的空白字符(或者其他字符)
常用。