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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
在PHP中执行系统外部命令
Oct 09 PHP
PHP 中dirname(_file_)讲解
Mar 18 PHP
PHP APC的安装与使用详解
Jun 13 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP实现文件上传功能实例代码
May 18 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
php压缩文件夹最新版
Jul 18 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
PHP动态变静态原理
2006/11/25 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
JS backgroundImage控制
2009/05/19 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
vue代码分割的实现(codesplit)
2018/11/13 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
python中urllib模块用法实例详解
2014/11/19 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
跟单文员岗位职责
2014/01/03 职场文书
买房协议书
2014/04/11 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android