PHP基础知识(五)
PHP字符串
单引号与双引号的区别
字符串是一个标量:单值变量,需要定界符。
根据声明定界符分为:单引号、双引号、Heredoc、Nowdoc
(1)单引号可以声明普通字符串,只能转义单引号和反斜线,不能解析变量。
(2)双引号可以声明普通遍历,可以转义全部特殊字符,能解析变量。
(3)Heredoc语言结构和双引号很相似,不同的是Heredoc里面出现的双引号不需要转义就可以输出。
(4)Nowdoc和单引号很相似,不同的是Nowdoc里面的单引号和反斜线不需要转义。
从PHP5.3开始Heredoc和Nowdoc还可以初始化局部变量和类属性。
变量解析的两种语法
简单语法$var和复杂语法{$var}
关联数组要用到复杂语法。举个例子:
测试结果:
字符串的增删改查(把字符串看成一个数组)
为了和数组有所区分,用花括号把下标括起来
删除字符串长度没变化,只是视觉的变化。
测试结果:
Heredoc的一些总结
1、换行,空格会保留。
2、因为不需要对引号进行转义,适合输出大段的HTML代码。
3、变量可以自动解析,适合于模板输出。
4、如果Heredoc或Nowdoc与其它字符串拼接,结尾不需要加分号。
测试结果:
注意:原本分号结尾处改成换行并加上字符串拼接符和拼接的字符串内容,分号结尾。
字符串的一些常见方法
子串处理函数substr()
获取字串的内容。
测试结果:
substr_replace()
替换子串内容。
测试结果:
将子串长度设置为0,实现无删除的插入
测试结果:
设置空字串,实现插入式的删除
测试结果:
在起始位置插入字符
测试结果:
如果最后一个参数没有提供,那么它默认为strlen(string)(字符串的长度),这样会把字符串替换掉。
substr_count()
查询子串出现的次数。
测试结果:
substr_compare()
二进制安全比较字符串(从偏移位置比较指定长度),第三个参数指的是第一个参数的字符串的起始位置。
如果比较等于0则表示相等,小于0,表示第一个子串小于第二个子串,如果大于0,则表示第一个子串大于第二个子串。
测试结果:
字符串检索strpos()
查找字符串首次出现的位置。
有三个参数,第三个参数表示查找的起始位置。
中文使用的是UTF-8编码,一个字占三个字节。
测试结果:
查找中文的时候,应开启多字节安全函数mb_,当前使用的版本是PHP5.4.45,使用多字节函数mb_,记得加上编码,否则用的默认编码是ISO-8859-1。
如果不加上编码,可以使用mb_internal_encoding(\'UTF-8\')进行统一修改。
测试结果:
strstr()
查找字符串第一次出现的位置到结尾的内容,第三个参数默认是false,当开启true的时候表示查找字符串第一次出现的位置的之前的内容。
测试结果:
字符串的填充与替换
str_pad()字符串填充
有四个参数,第一个参数是指定字符串,第二个参数是填充的长度,该长度必须大于指定字符串的长度,如果小于或等于都不会填充,第三个参数是填充的内容,第四个参数是指定填充位置,一共有三个值,默认值是STR_PAD_RIGHT,填充到左边是STR_PAD_LEFT,填充到两边是STR_PAD_BOTH。
测试结果:
字符串重复函数str_repeat()
测试结果:
随机打乱函数str_shuffle()
测试结果:
字符串替换函数str_replace()
可以单个替换也可以逐个替换,常用于Linux系统路径的反斜杠替换,逐个替换要传入的参数是数组。
测试结果:
字符串长度计算
纯英文就用strlen(),有中文就用mb_strlen(),PHP7以上是UTF-8编码
还有一个是mb_strwidth(),它会将所有多字节全部按2字节处理。
测试结果:
字符串分割与组合
explode()
字符串分割,返回的是数组。
测试结果:
implode()
字符串拼接,返回的是字符串。
测试结果:
字符串类型转换
浏览器默认输出都转成字符串
类型转换有三种:强制转换、永久转换、自动转换
1、强制转换(临时转换)
测试结果:
2、永久转换
使用settype(),返回的是布尔类型,true代表成功。
测试结果:
3、自动转换,与上下文无关。
测试结果:
注意:数字如果不是字符串的前导部分,会自动转成0。
字符串的格式化函数
字符串大小写转换strtolower()和strtoupper()
测试结果:
字符串转时间戳strtotime()
测试结果:
千位分隔符函数number_format()
举个例子:
测试结果:
ASCII码与整数之间的转换
将整数转为ASCII码用chr(),将ASCII码转为整数用ord()
测试结果:
将字符串的换行符\n转为html的<br/>
测试结果:
编码的转换iconv()
由于header()设置的是utf-8,所以转成GBK会出现乱码。
测试结果:
字符串加密
md5()和sha1(),sha1()计算字符串的散列值。
测试结果:
字符串内容过滤与转码
trim()函数
去除字符串首尾处的空白字符(或者其他字符)。
查看网页源代码和结果:
过滤html标记strip_tags()
测试结果:
htmlspecialchars()
将特殊字符转为html实体。
html中特殊字符有<、>、&、"主要四个
实体字符有:<:< 、>:> 、&:& 、":"
测试结果:
字符串的序列化与JSON处理
json_encode()将数组或对象转为json
测试结果:
json_decode()将一个json格式的字符串转为PHP对象
测试结果:
字符串序列化
将数据的结构、类型保存到变量或文件中方便传送。
测试结果: