PHP定义字符串的四种方式详解


Posted in PHP onFebruary 06, 2018

1、简介

在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用。

我们在使用php进行开发的时候,大多数使用双引号、单引号进行定义字符串。既然有这两种方式,那么他们之间肯定是有区别的。

并且,除了单双引号定义字符串这两种方式外,php还增加了heredoc和nowdoc这两种语法糖进行补充。

2、单引号与双引号

2.1、单引号

在单引号中,任何特殊字符都会按原样输出【除\\、\‘将会被转义输出】

eg.

<?php
$var = 'this is a var!';
echo '666$var666、\'、\"、\\、\n、\r、\t、\$';

PHP定义字符串的四种方式详解 

从上面例子中我们可以明显看到,变量是没有被解析的;同时带反斜杠的转义字符仅仅只有单引号、反斜杠被转义输出了,其他的是直接输出。

2.2、双引号

在双引号中,遇到$将会解析该变量;

双引号中会转义反斜杠的转义字符;

<?php
$var = 'this is a var!'; 
echo "666$var 666、\'、\"、\\、\n、\r、\t、\$";

转义字符代码 转义字符的含义
\ " 双引号
\ ' 单引号
\ \ 反斜杠
\ n 换行符
\ r 回车符
\ t 制表符
\ $ 美元符号

由上面例子我们可以知道,双引号中的变量被解析了,替换成字符串;其他带反斜杠的转义字符都进行了相应的转义。

PHP定义字符串的四种方式详解 

2.3、单双引号之间的区别

以上两者主要区别:

1、 双引号会替换变量的值,而单引号会把它当做字符串输出。

2、对于转义的支持

3、性能速度问题,由于双引号中的字符串需要检测是否含有$符号修饰的变量,因此从理论上讲,单引号是比较快的。

3、heredoc与nowdoc

3.1、heredoc

heredoc可以理解为不使用双引号来定义字符串,但效果与使用双引号一致。【此时双引号相当于普通字符】

语法要求:

1、开始标记和结束标记使用相同的字符串,通常以大写字母来写。

2、开始标记后不能出现空格或多余的字符。

3、结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。

4、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。

eg.

<?php
 $var = 'this is suifeng'; 
 echo <<<"EOT"
 <!DOCTYPE html>
 <html>
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
   <title>"随风"</title>
 </head>
 <body>
 66666666666<br/>
 "666666666"<br/>
 $var<br/>
 \$var<br/>
 \n666<br>
 </body>
 </html>
 EOT;

PHP定义字符串的四种方式详解 

从打印的结果我们可以看出:此时双引号仅仅只是一个普通字符;其他的效果和双引号的字符串效果一致。

3.2、nowdoc

同理,nowdoc是不使用单引号来定义,但效果相当于使用单引号来定义的字符串。【此时单引号相当于普通字符】

语法同heredoc

eg.

<?php 
 $var = 'this is suifeng'; 
 echo <<<'EOT' 
 <!DOCTYPE html>
 <html>
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
   <title>"随风"</title>
 </head>
 <body>
 '02020'<br/>
 \'<br/>
 66666666666<br/>
 "666666666"<br/>
 $var<br/>
 \$var<br/>
 \n666<br>
 </body>
 </html>
 EOT;

PHP定义字符串的四种方式详解 

注意:

定界符之后必须不能有任何字符【特别是空格字符有时会没注意到】,否则将会出错。

如上例中的EOT后面有空格就会报这个错误:【 Parse error : syntax error, unexpected '<<' (T_SL)】

总结

以上所述是小编给大家介绍的PHP定义字符串的四种方式详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
十天学会php之第七天
Oct 09 PHP
php上传、管理照片示例
Oct 09 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
php模拟post上传图片实现代码
Jun 24 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 #PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 #PHP
Yii2 中实现单点登录的方法
Mar 09 #PHP
php中输出json对象的值(实现方法)
Mar 07 #PHP
php 读写json文件及修改json的方法
Mar 07 #PHP
php读取本地json文件的实例
Mar 07 #PHP
PHP中in_array的隐式转换的解决方法
Mar 06 #PHP
You might like
php读取csv数据保存到数组的方法
2015/01/03 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
在视频前插入广告
2006/11/20 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
JSON 必知必会 观后记
2016/10/27 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
python调用外部程序的实操步骤
2019/03/04 Python
浅析python内置模块collections
2019/11/15 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
Python数据正态性检验实现过程
2020/04/18 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
Django REST 异常处理详解
2020/07/15 Python
python Zmail模块简介与使用示例
2020/12/19 Python
python中K-means算法基础知识点
2021/01/25 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
房地产开发计划书
2014/01/10 职场文书
环保建议书300字
2014/05/14 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
2014教师年度工作总结
2014/11/10 职场文书
小学生暑假生活总结
2015/07/13 职场文书
MYSQL 运算符总结
2021/11/11 MySQL