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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
使用adodb lite解决问题
Dec 31 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP中读写文件实现代码
Oct 20 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
详解json在php中的应用
Sep 30 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中截取字符串支持utf-8
2007/01/18 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
python使用cookielib库示例分享
2014/03/03 Python
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python Socket编程入门教程
2014/07/11 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
python 模拟登陆github的示例
2020/12/04 Python
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
使用C#编写创建一个线程的代码
2013/01/22 面试题
2014年元旦活动方案
2014/02/15 职场文书
地道战观后感
2015/06/04 职场文书
招商银行收入证明
2015/06/17 职场文书
在校生证明
2015/06/17 职场文书
业务员管理制度范本
2015/08/06 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python