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.ini中添加extension=php_mysqli.dll指令的说明
Jun 14 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
input file获得文件根目录简单实现
Apr 26 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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 格式化数字的时候注意数字的范围
2010/04/13 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php开发工具有哪五款
2015/11/09 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
javascript学习之json入门
2016/12/22 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Django中间件实现拦截器的方法
2018/06/01 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
师范生的个人求职信范文
2014/01/04 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
大学生学期个人总结
2015/02/12 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
python函数的两种嵌套方法使用
2022/04/02 Python
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers