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基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
php设计模式小结
Feb 15 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
php关联数组快速排序的方法
Apr 17 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
CI框架整合smarty步骤详解
May 19 PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 PHP
yii2多图上传组件的使用教程
May 10 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
PHP高并发和大流量解决方案整理
Dec 24 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
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
python打开音乐文件的实例方法
2020/07/21 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
大学生新闻专业个人自我评价
2013/11/12 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
小学教师办公室制度
2014/02/03 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
群众路线剖析材料
2014/09/30 职场文书
老人院义工活动感想
2015/08/07 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技