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版(1)
Oct 09 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
php实现登陆模块功能示例
Oct 20 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
php生成条形码的图片的实例详解
Sep 13 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学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
详解Python文件修改的两种方式
2019/08/22 Python
Django models文件模型变更错误解决
2020/05/11 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
Python截图并保存的具体实例
2021/01/14 Python
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
上班睡觉检讨书
2014/01/09 职场文书
事业单位请假制度
2014/01/13 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
物业管理专业求职信
2014/06/11 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
中学图书馆工作总结
2015/08/11 职场文书
入团申请书格式
2019/06/20 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python