字符串定义语法
- 单引号字符串
- 双引号字符串
比较适合定义那些比较短(不超过一行)或者没有结构要求的字符串,
如果有结构要求或者内容超过一行,可以使用以下两种结构定义 - nowdoc字符串:没有单引号的单引号字符串
$str=<<<’边界符’
字符串内容
边界符 - heredoc字符串:没有双引号的双引号字符串
$str=<<<边界符
字符串内容
边界符
结构不会发生变化
结构化定义字符串变量的规则
- 结构化定义字符串对应的边界符有条件:
- 上边界符后面不能有任何内容(包括注释,空格)
- 下边界符必须顶格:最左边
- 下边界符同样后面只能跟分号,不能跟任何内容
- 结构化定义字符串的内部(边界符之间)的所有内容都是字符串本身
字符串转义
转义的含义:在计算机通用协议中,有一些特定的方式定义的字母,系统会特定处理;通常这种方式都是使用反斜杠+字母(单词)的特性
\r \n:回车换行
PHP在识别转义字符的时候也是使用同样的模式:反斜杠+字母
在PHP中系统常用的转义符号
\’ 在单引号字符串中显示单引号
\”在双引号字符串中显示双引号
\r代表回车(理论上回到当前行的首位置)
\n代表新一行 (\r与\n配合就可以表示换行)
\t 类似TAB键,输出四个空格
\$ 在PHP中使用$符号作为变量符号,因此需要特定识别
单引号与双引号区别:
- 单引号中能识别\‘(因为在单引号中出现没有转义的’会有误解,发生错误),而双引号仅不能识别\’(因为在双引号中‘能正确使用不会有误解)
因为单引号中$没有变量意义,所以/$ 原样输出 因为双引号中$有变量意义,所以能识别/$转义成没有意义的$输出 - 双引号中因为能够识别$符号,所以双引号中可以解析变量,而单引号不可以。(故)
双引号中变量识别的规则
- 变量本身能与后面的内容区分:应该保证变量的独立性,不要让系统难以区分,给变量加上一组大括号
- 使用变量专业标识符(区分)
字符串转义
字符串长度问题
- 基本函数strlen():得到字符串的长度(字节为单位)
- 多字节字符串的长度问题:包含中文的长度
- 多字节字符串扩展模块:mbstring扩展(mb:Multi Byte)
首先需要加载PHP的mbstring扩展
可以使用mb扩展带来很多函数
mb_string扩展针对的是一些关于字符统计
strlen()只是针对标准交换码ASCII,mbstring针对不同的字符集
字符串相关函数
转化函数:implode(),explode(),str_split
implode(连接方式,数组)将数组中的元素按照某个规则连接成一个字符串
explode(分割字符,目标字符串)将字符串按照某个格式进行分割,变成数组
str_split(字符串,字符长度):按照指定长度拆分字符串得到数组
截取函数 trim(),ltrim(),rtrim()
trim(str,【去除的内容】)本身默认去除两边的空格(中间不行),但是也可以指定要去除的内容,是按指定的内容循环去除两边的内容,碰到一个不是目标字符为止
ltrim() 去除左边的 rtrim()去除右边的
截取函数
substr(字符串,起始位置从0开始,【长度】):指定位置开始截取字符串,可以截取指定长度(不指定表示到最后)
strstr(字符串,匹配字符):从指定字符开始截取,到最后(strrchr() - 查找指定字符在字符串中的最后一次出现,可以用来取文件后缀名:利用.)
大小转换函数
strtolower — 将字符串转化为小写
strtoupper 将字符串转化为大写
Ucfirst()首字母大写
ucwords() - 将字符串中每个单词的首字母转换为大写
查找函数
strpos(字符串,指定字符,起始位置)查找首次出现的位置
- 起始位置如果是负数,搜索会从字符串结尾指定字符数开始。
- 同时注意字符串位置是从0开始,而不是从1开始的。 如果没找到 needle,将返回 FALSE。
替换函数
str_replace(匹配目标,替换的内容,字符串):将目标字符串中部分字符串进行替换
str_ireplace — str_replace() 的忽略大小写版本
格式化函数
printf() / sprintf(输出字符串有占位符,若干占位符)
其他
str_repeat(字符串,次数)
重复一个字符串(必须大于等于 0。如果 multiplier 被设置为 0,函数返回空字符串)
str_shuffle()随机打乱字符串