网站首页 > 技术文章 正文
定界符
定界符的语法:应该在<<<之后提供一个标识符号,然后是包含的字符串,最后是同样的的标识符结束字符串。结束标识符必须从行的第一列开始,并且后面
除了分号之外不能包含任何字符,空格以及空白制表符都不可以。同样,定界标记使用的标识符也必须遵循PHP中其他任何标签的命名规则,只能包含字母数字
下划线,而且必须以下画线或非数字字符开始。
<?php
$str= <<< EOT
此种形式就是双引号定界符, 这里是包含在定界符中的字符串,指出了定界符的一些使用时注意的事项。很重要的一点必须指出,结束标识符EOT所在的行不能包含任何其他字符。
这尤其意味着该标识符不能被缩进,而且在结束标记的分号之前和之后都不能有任何空格或制表符。
同样重要的是,要意识到在结束标识符之前的第一个字符必须是你的操纵系统中定义的换行符。如果破坏了这条规则使得结束标识符不"干净",则它
不会被视为结束标识符,php将继续寻找下去。如果在这种情况找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。
EOT;
echo $str;
?>
定界符除了不能初使化类成员以外, 表现的就和双引号字符串一样, 只是没有双引号。这意味着在定界符文本中不需要转义引号, 不过仍然可以用以上列出来的
在双引号可以使用的转义符号,而且定界符中的变量也会被解析。
注意:结束标识符所在的行的分号后面为了保持"干净", 可以按"ENTER"回车键或方向键定位到下方继续输入代码, 但不能使用"space"空格键;
同样, 开始定界符后面(EOT)不能有空格, 必须按"ENTER"回车键或方向键定位到下方继续输入文本, 而"<<<"前后可以保留空格
//使用界定符输出变量
$name = "MyName";
echo <<<EOT
My name is $name.I am printing a "string"\n.
\tNow,I am printing some new line \n\r.
\tThis should print a capital 'A'
EOT;
输出结果:My name is MyName.I am printing a "string" . Now,I am printing some new line . This should print a capital 'A'
总结:
变量会解析
可以用转义字(除单引号和双引号)
在定界符文本中不需要转义引号(单引号和双引号)
转义字符 序列 含义
\n 换行(LF 或 ASCII 字符 0x0A(10))
\r 回车(CR 或 ASCII 字符 0x0D(13))
\t 水平制表符(HT 或 ASCII 字符 0x09(9))
\\ 反斜线
\$ 美元符号
\" 双引号
\[0-7]{1,3} 此正则表达式序列匹配一个用八进制符号表示的字符
\x[0-9A-Fa-f]{1,2} 此正则表达式序列匹配一个用十六进制符号表示的字符
PHP中转义字符(非打印字符)只能在php解析后, 在浏览器中查看代码才能看到效果。
换行符
换行符: unix系列用\n, windows系列用\r\n, mac用\r
PHP中可以用PHP_EOL来替代, 以提高代码的源代码级可移植性
如:
<?php
echo "one", PHP_EOL, "two", PHP_EOL, "three"; //显示结果: one two three
?>
查看源代码:
one
two
three
单引号和双引号定界符(PHP 5.3.0中加入的, 新增了单引号定界符和双引号定界符(就是定界符))
单引号定界符(Nowdoc结构): 既没有转义符, 也不能识别变量。
这种结构很适合用于嵌入PHP代码或其它大段文本而无需对其中的特殊字符进行转义;
双引号定界符(Heredoc结构):可用(识别)转义符: \\, \n, \r, \t, \$
可以识别其中的变量--但注意其识别的范围
在PHP5.3.0以后, 也可以用定界符来初始化静态变量和类的属性和常量:
理解双引号定界符就是先前的定界符:
<?php
echo <<<"FOOBAR"
Hello World!
FOOBAR;
?>
等同于
<?php
echo <<<FOOBAR
Hello World!
FOOBAR;
?>
以上两种都称为Heredoc结构, 自php5.3.0起支持初使化静态变量和类的属性和常量
<?php
//双引号定界符字符串(heredoc):
//其中可以识别的转义符有:\\(表示一个\) \n(换行) \r(回车) \t(制表符) \$
$str3 = <<<"HHHH"
这个范围的任何内容都是字符串的内容
可以随意换行,使用tab符: (这里之前有2个tab)
单双引号也可以随便用:"fafaf", 'fafa'
其中"HHHH"是自己可以任意给定的一个“字符串”而已。
下一行,必须尊照这个要求:只有该字符串本身和一个分号(;)
HHHH;
echo "\n\n<br />\n\n";
echo $str3;
//单引号定界符字符串(nowdoc):
//其中可以识别的转义符有:没有(即没有特殊表达的字符)
$str4 = <<<'mm'
这个范围的任何内容都是字符串的内容
可以随意换行,使用tab符: (这里之前有2个tab)
单双引号也可以随便用:"fafaf", 'fafa'
其中'mm'是自己可以任意给定的一个“字符串”而已。
下一行,必须尊照这个要求:只有该字符串本身和一个分号(;)
mm;
echo "\n\n<br />\n\n";
echo $str4;
?>
- 上一篇: Linux管理基础命令"tr"你用过吗?
- 下一篇: Pr常用快捷键
猜你喜欢
- 2025-01-11 C语言变量和常量
- 2025-01-11 文档段落异常怎么办?
- 2025-01-11 wxPython - 给菜单添加图标和快捷键
- 2025-01-11 使用 Python 开发一个 Python 解释器
- 2025-01-11 Linux系统中最常用的文本显示工具:cat命令
- 2025-01-11 Word中如何快速对齐ABCD选项?
- 2025-01-11 编写一个自动生成双色球号码的 Python 小脚本
- 2025-01-11 Python-九九乘法表
- 2025-01-11 关于Java正则和转义中\\和\\\\的理解
- 2025-01-11 干货丨零基础如何学习 R 语言?
- 最近发表
-
- C语言重要吗?_c语言重要吗计算机专业
- 2024 年顶级 C# 面试问题和答案_c#面试题及答案2020
- C#调用C++编写的DLL需要通过P/Invoke机制实现
- 掌握 C# 和 .NET:常用术语与概念_c#.net教程
- C++ .NET与C# .NET:谁才是.NET开发的“真香”选择?
- 是C++好,带GC的Java、C#好?还是Rust好?
- 为什么有人一直喜欢 C 而不喜欢 C++?
- Python定时任务,三步实现自动化_python定时任务,三步实现自动化
- (三)Java基础知识复习(异常处理)_java异常处理规则(新手必看)
- 情人节脱单秘诀,程序员表白的情话大盘点!| CSDN 博文精选
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)