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 相关文章推荐
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP自动生成表单代码分享
Jun 19 PHP
PHP模板解析类实例
Jul 09 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
初识PHP中的Swoole
Apr 05 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
jquery中this的使用说明
2010/09/06 Javascript
JS 表单验证大全
2011/11/23 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
原生js实现无缝轮播图效果
2017/01/11 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
在Python中使用SQLite的简单教程
2015/04/29 Python
浅析Python中signal包的使用
2015/11/13 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
详解python数据结构和算法
2019/04/18 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
初中同学聚会邀请函
2014/02/03 职场文书
住宅使用说明书
2014/05/09 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
2016春节家属慰问信
2015/03/25 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
党员带头倡议书
2015/04/29 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android
Python基本数据类型之字符串str
2021/07/21 Python
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS