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 日期时间处理函数小结
Dec 18 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
nodejs教程之环境安装及运行
2014/11/21 NodeJs
JavaScript性能优化之小知识总结
2015/11/20 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
wxPython使用系统剪切板的方法
2015/06/16 Python
教你学会使用Python正则表达式
2017/09/07 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
基于python实现计算两组数据P值
2020/07/10 Python
学python爬虫能做什么
2020/07/29 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
介绍一下#error预处理
2015/09/25 面试题
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
元旦晚会策划方案
2014/02/18 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
课外活动总结范文
2014/07/09 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android