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在特殊字符前加斜杠的实现代码
Jul 17 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 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为php增加openssl模块的方法
2011/06/14 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
Python的subprocess模块总结
2014/11/07 Python
Python 性能优化技巧总结
2016/11/01 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
django用户登录验证的完整示例代码
2019/07/21 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
领导班子作风建设剖析材料
2014/10/11 职场文书
校园广播站开场白
2015/06/01 职场文书
郭明义电影观后感
2015/06/08 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
mysql部分操作
2021/04/05 MySQL
Pandas数据类型之category的用法
2021/06/28 Python
js不常见操作运算符总结
2021/11/20 Javascript
python装饰器代码解析
2022/03/23 Python
Golang bufio详细讲解
2022/04/21 Golang
python使用shell脚本创建kafka连接器
2022/04/29 Python