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 相关文章推荐
动易数据转成dedecms的php程序
Apr 07 PHP
PHP 防恶意刷新实现代码
May 16 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
linux下php上传文件注意事项
Jun 11 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
php实现微信发红包功能
Jul 13 PHP
php查询内存信息操作示例
May 09 PHP
Laravel 实现数据软删除功能
Aug 21 PHP
Yii框架连表查询操作示例
Sep 06 PHP
通过实例解析PHP数据类型转换方法
Jul 11 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 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
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
图片自动更新(说明)
2006/10/02 Javascript
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python日志syslog使用原理详解
2020/02/18 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
求职信模板怎么做
2014/01/26 职场文书
体育教师求职信
2014/06/30 职场文书
先进党支部事迹材料
2014/12/24 职场文书
汶川大地震感悟
2015/08/10 职场文书
教师远程培训心得体会
2016/01/09 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers