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 相关文章推荐
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
初识php MVC
Sep 10 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
PHP SPL标准库之SplFixedArray使用实例
May 12 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
PHP获取对象属性的三种方法实例分析
Jan 03 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开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
php实现httpclient类示例
2014/04/08 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
JQuery优缺点分析说明
2010/06/09 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
化工机械应届生求职信
2013/11/04 职场文书
物业经理自我鉴定
2014/03/03 职场文书
取保候审保证书
2014/04/30 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
党员民主评议自我评价
2014/10/20 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang