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 显示客户端IP与服务器IP的代码
Oct 12 PHP
9个PHP开发常用功能函数小结
Jul 15 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
php实现的操作excel类详解
Jan 15 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 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上传文件常见问题总结
2015/02/03 PHP
PHP输出日历表代码实例
2015/03/27 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
政风行风建设责任书
2014/07/23 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
母亲节主题班会
2015/08/14 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers