字符串就是所有我们可见和不可见的字符,就是我们日常当中说的话,就是我想说:“李文凯好帅”或者“凤姐,我爱你!”。字符串,就是我想表达的一切让人看到的字符。
例如可以看到的字符:
`我愿变成童话你,你爱的那个王子,有房有车有票子。`
`<html><title></title></html>`
`^@@@#@`
`my name is xiaoshenyang`
以上可以见到的文字,HTML标签、特殊字符和英文等等,我们都认为是字符串。
注:不可见字符暂时不讲解,因为,文本中无法表现,下面的实验中逐渐注意即可。为了有更清晰的表现,也可以观看本书配套的PHP学院出品关于字符串的视频。
在PHP语言中声明字符串有三种方式:
1. 用单引号声明
2. 用双引号声明
3. 用字界符声明(需要输入非常大段的字符串时使用)
**1.单引号声明**
用英文半脚的单引号,将字符串包起来
~~~
<?php
//声明字符串变量$zhifu
$zhifu = '曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子';
//你可以放XAMPP指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。
echo $zhifu;
?>
~~~
2. 双引号声明字符串
在字符串两边加双引号。
~~~
<?php
//声明字符串变量$str
$str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。";
echo $str;
?>
~~~
3.字界符声明
1).在变量后面的等号写三个小于号(<<<)。
2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC
3).然后换行写上任意想写的字符
4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;
~~~
<?php
$dingjie = <<<ABC
如果
非要在这个滚犊子
前
面<br />
加上一段
<i>距离的话</i>
我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;
?>
~~~
###那双引号和单引号有什么区别呢?
**【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上)**
1. 双引号解析变量,但是单引号不解析变量。
2. 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
4. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\\
5. 单引号效率高于双引号,尽可能使用单引号
6. 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。
8. 我们将定界符声明字符串视为双引号一样的功能来看待。
####实验举例
**1.双引号解析变量,但是单引号不解析变量**
~~~
<?php
//声明变量$shouji
$shouji = '为了苹果手机去卖肾';
//在双引号中放$shouji 然后echo 一下是什么效果呢?
$str = "$shouji 会不会显示呢?";
//输入$str试试
echo $str;
?>
~~~
在浏览器中打开,运行的结果如下:
![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. 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。**
~~~
<?php
$huaqiangu = '花千骨';
$str = "$huaqianguaaaa";
//你会发现输出$str,什么都没有在页面中显示
echo $str;
?>
~~~
但是,我们在$str 声明的这个字符串中将$huaqiangu 后面接个空格再接aaaa,代码如下:
~~~
<?php
$huaqiangu = '花千骨';
//中间加了空格哟
$str = "$huaqiangu aaaa";
echo $str;
?>
~~~
大家发现执行显示的结果不再是空白页面,而是这个页面中有内容了。如下:
![2015-07-26/55b4f5794a6ad](http://box.kancloud.cn/2015-07-26_55b4f5794a6ad.png)
我们把代码再改改:
~~~
<?php
$huaqiangu = '花千骨';
//中间加了空格哟
$str = "$huaqiangu!aaaa";
echo $str;
?>
~~~
大家打开一次页面,执行了一次代码看看结果是不是变为了:
> 花千骨!aaaa
因此,证明了我们的第二项观点。
**3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。**
那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:
~~~
<?php
$huaqiangu = '花千骨';
//中间加了空格哟
$str = "{$huaqiangu}aaaa";
echo $str;
?>
~~~
于是,大家会发现花千骨后面没有了特殊符号,也没有空格了,达到了我们想要的显示结果,演示效果如下:
![2015-07-26/55b4f6de368e1](http://box.kancloud.cn/2015-07-26_55b4f6de368e1.png)
**4. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\\**
第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:
\n 回车
\t 缩进
我们来通过实验先来理解\n和\t是什么。
~~~
<?php
//声明一个字符串,记住是双引号
$string = "每天PHP学院\n给梦想\t一个机会";
echo $string;
?>
~~~
做这一块的实验中有一个注意事项,显示网页是看不出来效果的,如下:
![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双引号改为用单引号:
~~~
<?php
//声明一个字符串,记住是双引号
$string = '每天PHP学院\n给梦想\t一个机会';
echo $string;
?>
~~~
执行一次看看效果:
![2015-07-26/55b4fa4556af4](http://box.kancloud.cn/2015-07-26_55b4fa4556af4.png)
你会发现——单引号中间的\t和\n直接显示出来了,而没有变成按一次回车键和按一次tab键后的效果。
因此:
> 双引号执行转义字符而单引号不执行转义字符。
**5. 转义字符\(反斜线的使用)**
如果我们声明一个变量$beizi,我们想要在$beizi声明的双引号中间加上一个双引号显示输出怎么办?
~~~
<?php
//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧";
echo $beizi;
?>
~~~
如果真如上述所写代码,代码会报错。报错结果如下:
因为字符串:“多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧”必须写在双引号中间。而双引号中间还有一个双引号。也就是意味着字符串声明提前结束了,在“但是”处结束了。后面"我们在不断的让人生变为喜剧",电脑不认识。
这真是一个杯具!那么办?
答:我们需要将双引号原有的意义去掉。再双引号前面加上一个\(反斜线,计算机的专业名词叫转义字符),就可以了。
~~~
<?php
//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧";
echo $beizi;
?>
~~~
你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上\(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。
~~~
<?php
//要在$beizi的字符串中显示一个双引号怎么办?
$shengyang = 'i\'m xiaoshengyang';
echo $shengyang;
?>
~~~
**6. 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。**
代码如下:
~~~
<?php
$legend = '猛虎';
$NoAlike = "心有'$legend',细嗅蔷薇";
echo $NoAlike;
?>
~~~
执行结果如下:
![2015-07-26/55b4ff2d043ac](http://box.kancloud.cn/2015-07-26_55b4ff2d043ac.png)
**7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。**
~~~
<?php
$huaqiangu = '花千骨';
//中间加了空格哟
$str = "{$huaqiangu}aaaa";
echo $str;
?>
~~~
上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:
> 效率没有纯单引号的高
那么问题1:我想改为效率最高的方式应该怎么办?
问题2:我有多个字符串,要拼接在一声怎么办?
那,我们需要使用到神奇的胶水:(.)点,用来拼接字符串。
~~~
<?php
$shixi = '大学4年要好好学习<br />';
$buran = '不然连实习的机会都没有<br />';
$mimang = '把别人用来迷茫的时间拿到PHP学院<br />';
$xuexi = '学习PHP<br />';
//我们可以把字符串全部拼接起来。
echo $shixi . $buran . $mimang . $xuexi;
?>
~~~
因此,刚刚的问题一的代码我们可以改为:
~~~
<?php
$huaqiangu = '花千骨';
//中间加了空格哟
$str = $huaqiangu . 'aaaa';
echo $str;
?>
~~~
**8. 我们将定界符声明字符串视为双引号一样的功能来看待。**
~~~
<?php
$weilai = '努力才有未来';
$mimang = '迷茫的原因是没有目标';
$dingjie = <<<ABC
如果
$weilai
非要\t在这"个滚"犊子
前
'$mimang'
面<br />
加上\n一段
<i>距离的话</i>
我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;
echo $dingjie;
?>
~~~
你可以执行发现$weilai,$mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。
#### 再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!
* * * * *
不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。
双引号执行变量,所以
- 01. 为什么选择本书学习PHP
- 1.1 为什么学习PHP?
- 1.2 PHP是什么
- 1.3 零基础也能学习
- 1.4 为什么有些人学不会
- 02.PHP的环境安装
- 2.1开发环境是什么?
- 2.2 windows环境安装
- 2.3 Linux环境安装
- 2.4 其他开发环境
- 2.5 写代码的工具选择
- 03. PHP基本语法
- 3.1 PHP基本语法
- 3.1.1 写出你的第一段PHP代码
- 3.1.2 读过初中你就会变量
- 3.1.3 echo 显示命令
- 3.1.4 注释的功能很强大
- 3.2 数据类型并不神秘
- 3.2.1 整型就是整数
- 3.2.2 布尔就是易经的知识
- 3.2.3 字符串
- 3.2.4 浮点型
- 3.2.5 重要:if和else语法
- 3.2.6 NULL类型
- 3.2.7对象以后会学
- 3.2.8 数组会有单纯的一个章节
- 3.2.9 资源类型
- 3.2.10 眼前了解回调类型即可
- 3.2.11 查看和判断数据类型
- 3.2.12 数据类型的自动转换和强制转换
- 3.3 常量和变量
- 3.3.1 用常量限制用户跳过某些文件
- 3.3.2 可变变量
- 3.3.3 外部变量
- 3.3.4 环境变量
- 3.3.5 变量引用
- 3.4 PHP表达式与运算符
- 3.4.1 算术运算
- 3.4.2 赋值运算
- 3.4.3 自加、自减运算
- 3.4.4 比较运算
- 3.4.5 逻辑运算
- 3.4.6 位运算
- 3.4.7 运算符优先级
- 3.4.8 三元运算符和其它运算符
- 04. PHP中的流程控制
- 4.1 if条件结构流程
- 4.1.1 if语句
- 4.1.2 嵌套if...else...elseif结构
- 4.1.3 if语句多种嵌套
- 4.2 分支结构switch语句的使用
- 4.3 循环语句的使用
- 4.3.1 while循环
- 4.3.2 do...while循环的区别
- 4.3.3 for循环控制语句
- 4.3.4 goto语法
- 4.3.5 declare 语法
- 05.PHP的函数基本语法
- 5.1 自定义函数
- 5.2 自定义函数高级调用
- 5.2.1 回调函数
- 5.2.2 变量函数
- 5.2.3 匿名函数
- 5.2.4 内部函数
- 5.2.5 变量作用域
- 5.2.6 参数的引用
- 5.2.7 递归函数
- 5.2.8 静态变量
- 5.3 使用系统内置函数
- 5.4 文件包含函数
- 5.5 数学常用函数
- 5.6 日期常用函数
- 5.6.1 获取时期时间信息函数
- 5.6.2 日期验证函数
- 5.6.3 获取本地化时间戳函数
- 5.6.4 程序执行时间检测
- 5.7 字符串常用函数
- 06.PHP数组与数据结构
- 6.1 数组的定义
- 6.2 数组的操作
- 6.2.1 数组的计算
- 6.2.2 for循环遍历索引数组
- 6.2.3 foreach遍历关联数组
- 6.2.4 list、each函数遍历数组
- 6.2.5 常用操作数组函数
- 6.3 数组的常用函数
- 07. PHP中的正则达达式
- 7.1 正则表达示的定界符
- 7.2 正则表达示中的原子
- 7.3 正则表示中的元字符
- 7.4 正则达达示中的模式修正符
- 7.5 写正则的诀窍和常用正则
- 7.6 用正则写一个UBB文本编辑器
- 08.文件系统
- 8.1 读取文件
- 8.2 创建和修改文件内容
- 8.3 创建临时文件
- 8.4 移动、拷贝和删除文件
- 8.5 检测文件属性函数
- 8.6 文件常用函数和常量
- 8.7 文件锁处机制
- 8.8 目录处理函数
- 8.9 文件权限设置
- 8.10文件路径函数
- 8.11 小小文件留言本
- 8.12 修改配置文件的实例
- 09.PHP文件上传
- 9.1 文件上传需要注意php.ini文件
- 9.2 文件上传的步骤
- 9.3 文件上传表单注意事项
- 9.4 按照数组和步骤完成文件上传
- 9.5 多文件上传
- 9.6 文件上传进度处理
- 10.PHP图像处理
- 10.1 学习前的准备工作
- 10.2 用图片处理函数画一张图
- 10.3 生成验证码
- 10.4 图像缩放和裁剪技术
- 10.5 图片水印处理
- 11.错误处理
- 11.1 禁止显示错误
- 11.2 错误报告级别
- 11.3 错误记录日志
- 11.4 自定义错误处理函数
- 12.MySQL 入门
- 12.1 请进入《MySQL入门》
- 13. PHP操作mysql数据库
- 13.1 数据库连接步骤
- 13.2 通过步骤做一个用户注册
- 13.3 通过步骤做一个列表显示
- 13.4 把用户做个分页
- 13.5 批量和指定删除用户
- 13.6 修改用户信息
- 13.7 数据显示乱码终极解决办法
- 14.会话管理和控制
- 14.1 Cookie概述
- 14.2PHP中的Cookie
- 14.3 session概述
- 14.4 PHP中使用session
- 14.5 SESSION应用实例
- 15.通过cURL来做小偷程序
- 15.1 curl的使用步骤
- 15.2 自定义get方法抓取网页
- 15.3 使用post发送数据
- 16. 用PHP写一个论坛
- 16.1 web2.0始于论坛
- 16.2 需求:开发前你要知道他的样子
- 16.3 核心业务流程
- 16.3.1 用户注册流程
- 16.3.2 普通用户和管理员登陆流程
- 16.3.3 发贴流程
- 16.3.4 回复流程
- 16.3.5 版块管理流程
- 16.3.6 版主业务流程
- 16.3.7 金币奖励和消耗流程
- 16.4 数据库表设计
- 16.5 文件和代码规范
- 16.6 核心功能说明
- 16.6.1 项目目录结构说明
- 16.6.2 公共文件的使用
- 16.6.3 模板引擎讲解
- 16.6.4 用户注册、登陆功能讲解
- 16.6.5 发帖功能讲解
- 16.6.6 回帖功能讲解
- 16.6.7 项目安装模块讲解
- 附录1. 版权声明
- 附录2 . 学习PHP常用的英文单词