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+MYSQL的文章管理系统(一)
Oct 09 PHP
用PHP和ACCESS写聊天室(一)
Oct 09 PHP
php快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
PHP 万年历实现代码
Oct 18 PHP
解析strtr函数的效率问题
Jun 26 PHP
php header功能的使用
Oct 28 PHP
PHP return语句的另一个作用
Jul 30 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
PHP实现微信对账单处理
Oct 01 PHP
php数组指针函数功能及用法示例
Feb 11 PHP
PHP异步进程助手async-helper
Feb 05 #PHP
详解PHP中的外观模式facade pattern
Feb 05 #PHP
浅析PHP开发规范
Feb 05 #PHP
实例讲解PHP页面静态化
Feb 05 #PHP
PHP使用ActiveMQ实例
Feb 05 #PHP
详解PHP中mb_strpos的使用
Feb 04 #PHP
详解PHP文件的自动加载(autoloading)
Feb 04 #PHP
You might like
js打印纸函数代码(递归)
2010/06/18 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
python实现报表自动化详解
2017/11/16 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
Python列表list排列组合操作示例
2018/12/18 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
质量提升方案
2014/06/16 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
会议通知
2015/04/15 职场文书
少年犯观后感
2015/06/11 职场文书
导游词之太原天龙山
2020/01/02 职场文书
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python