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 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
深入php list()函数的详解
Jun 05 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
PHP程序员必须知道的两种日志实例分析
May 14 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python os模块介绍
2014/11/30 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Django工程的分层结构详解
2019/07/18 Python
python requests指定出口ip的例子
2019/07/25 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
社区消防工作实施方案
2014/03/21 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
六年级数学教学反思
2016/02/16 职场文书