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 相关文章推荐
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
PHP中的Streams详细介绍
Nov 12 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
php技术实现加载字体并保存成图片
Jul 27 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
laravel框架实现去掉URL中index.php的方法
Oct 12 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 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
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python使用mysql数据库示例代码
2017/05/21 Python
解决python 上传图片限制格式问题
2019/10/30 Python
介绍下WebSphere的安全性
2013/01/31 面试题
链表面试题-一个链表的结点结构
2015/05/04 面试题
元旦联欢会主持词
2014/03/26 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android