3.2.3 字符串

最后更新于:2022-04-02 00:17:48

字符串就是所有我们可见和不可见的字符,就是我们日常当中说的话,就是我想说:“李文凯好帅”或者“凤姐,我爱你!”。字符串,就是我想表达的一切让人看到的字符。 例如可以看到的字符: `我愿变成童话你,你爱的那个王子,有房有车有票子。` `` `^@@@#@` `my name is xiaoshenyang` 以上可以见到的文字,HTML标签、特殊字符和英文等等,我们都认为是字符串。 注:不可见字符暂时不讲解,因为,文本中无法表现,下面的实验中逐渐注意即可。为了有更清晰的表现,也可以观看本书配套的PHP学院出品关于字符串的视频。 在PHP语言中声明字符串有三种方式: 1. 用单引号声明 2. 用双引号声明 3. 用字界符声明(需要输入非常大段的字符串时使用) **1.单引号声明** 用英文半脚的单引号,将字符串包起来 ~~~ ~~~ 2. 双引号声明字符串 在字符串两边加双引号。 ~~~ ~~~ 3.字界符声明 1).在变量后面的等号写三个小于号(<<<)。 2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC 3).然后换行写上任意想写的字符 4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC; ~~~ 加上一段 距离的话 我想说:

思想有多远,你就跟我滚多远

ABC; ?> ~~~ ###那双引号和单引号有什么区别呢? **【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上)** 1. 双引号解析变量,但是单引号不解析变量。 2. 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。 3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\\ 5. 单引号效率高于双引号,尽可能使用单引号 6. 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8. 我们将定界符声明字符串视为双引号一样的功能来看待。 ####实验举例 **1.双引号解析变量,但是单引号不解析变量** ~~~ ~~~ 在浏览器中打开,运行的结果如下: ![2015-07-26/55b4931eef9c5](http://box.kancloud.cn/2015-07-26_55b4931eef9c5.png) 通过上边的例子,我们发现。双引号中间的变量够执行显示,我们将$str这个字符串两边的双引号,改为单引号试试,再看一次执行结果: ![2015-07-26/55b4938bea073](http://box.kancloud.cn/2015-07-26_55b4938bea073.png) 发现$shouji 直接显示出来了,而不是双引号的显示结果。 通过上例,我们证明了:双引号执行变量,而单引号不执行变量。我们得到一个重要结论: > 双引号需要解析变量,因此双引号的效率没有单引号高。我们如果为了更高的效率,我们通常使用单引号。 **2. 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。** ~~~ ~~~ 但是,我们在$str 声明的这个字符串中将$huaqiangu 后面接个空格再接aaaa,代码如下: ~~~ ~~~ 大家发现执行显示的结果不再是空白页面,而是这个页面中有内容了。如下: ![2015-07-26/55b4f5794a6ad](http://box.kancloud.cn/2015-07-26_55b4f5794a6ad.png) 我们把代码再改改: ~~~ ~~~ 大家打开一次页面,执行了一次代码看看结果是不是变为了: > 花千骨!aaaa 因此,证明了我们的第二项观点。 **3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。** 那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下: ~~~ ~~~ 于是,大家会发现花千骨后面没有了特殊符号,也没有空格了,达到了我们想要的显示结果,演示效果如下: ![2015-07-26/55b4f6de368e1](http://box.kancloud.cn/2015-07-26_55b4f6de368e1.png) **4. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\\** 第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有: \n 回车 \t 缩进 我们来通过实验先来理解\n和\t是什么。 ~~~ ~~~ 做这一块的实验中有一个注意事项,显示网页是看不出来效果的,如下: ![2015-07-26/55b4f88038913](http://box.kancloud.cn/2015-07-26_55b4f88038913.png) 为什么看不出来\n和\t代表什么含义,也看不出来双引号解析了\n和\t呢?——因为,你没有**点击鼠标右键查看源代码**。我们来点击一下,再看看效果。 第一步:显示网页源代码 ![2015-07-26/55b4f916e79c5](http://box.kancloud.cn/2015-07-26_55b4f916e79c5.png) 第二步:查看HTML源代码显示的结果: ![2015-07-26/55b4f949219d9](http://box.kancloud.cn/2015-07-26_55b4f949219d9.png) 大家来对比字符串变量: > $string = "每天PHP学院\n给梦想\t一个机会"; \n在PHP学院的后面,在源代码里显示的结果是跟按了回车键一样的效果。 \t在给梦想和一个机会中间。显示的结果是有几个空格的效果。\t相当于我们在电脑上按了一个tab键效果。 但是,我们同样执行一下上面的代码,但是$string双引号改为用单引号: ~~~ ~~~ 执行一次看看效果: ![2015-07-26/55b4fa4556af4](http://box.kancloud.cn/2015-07-26_55b4fa4556af4.png) 你会发现——单引号中间的\t和\n直接显示出来了,而没有变成按一次回车键和按一次tab键后的效果。 因此: > 双引号执行转义字符而单引号不执行转义字符。 **5. 转义字符\(反斜线的使用)** 如果我们声明一个变量$beizi,我们想要在$beizi声明的双引号中间加上一个双引号显示输出怎么办? ~~~ ~~~ 如果真如上述所写代码,代码会报错。报错结果如下: 因为字符串:“多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧”必须写在双引号中间。而双引号中间还有一个双引号。也就是意味着字符串声明提前结束了,在“但是”处结束了。后面"我们在不断的让人生变为喜剧",电脑不认识。 这真是一个杯具!那么办? 答:我们需要将双引号原有的意义去掉。再双引号前面加上一个\(反斜线,计算机的专业名词叫转义字符),就可以了。 ~~~ ~~~ 你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上\(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。 ~~~ ~~~ **6. 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。** 代码如下: ~~~ ~~~ 执行结果如下: ![2015-07-26/55b4ff2d043ac](http://box.kancloud.cn/2015-07-26_55b4ff2d043ac.png) **7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。** ~~~ ~~~ 上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题: > 效率没有纯单引号的高 那么问题1:我想改为效率最高的方式应该怎么办? 问题2:我有多个字符串,要拼接在一声怎么办? 那,我们需要使用到神奇的胶水:(.)点,用来拼接字符串。 ~~~ '; $buran = '不然连实习的机会都没有
'; $mimang = '把别人用来迷茫的时间拿到PHP学院
'; $xuexi = '学习PHP
'; //我们可以把字符串全部拼接起来。 echo $shixi . $buran . $mimang . $xuexi; ?> ~~~ 因此,刚刚的问题一的代码我们可以改为: ~~~ ~~~ **8. 我们将定界符声明字符串视为双引号一样的功能来看待。** ~~~ 加上\n一段 距离的话 我想说:

思想有多远,你就跟我滚多远

ABC; echo $dingjie; ?> ~~~ 你可以执行发现$weilai,$mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。 #### 再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高! * * * * * 不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。 双引号执行变量,所以
';