当前位置:首页 > 技术分析 > 正文内容

定界符文本和转义字符(参考)

ruisui882个月前 (04-26)技术分析24

定界符

定界符的语法:应该在<<<之后提供一个标识符号,然后是包含的字符串,最后是同样的的标识符结束字符串。结束标识符必须从行的第一列开始,并且后面

除了分号之外不能包含任何字符,空格以及空白制表符都不可以。同样,定界标记使用的标识符也必须遵循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;
?>

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3610.html

分享给朋友:

“定界符文本和转义字符(参考)” 的相关文章

内存问题探微

这篇文章是我在公司 TechDay 上分享的内容的文字实录版,本来不想写这么一篇冗长的文章,因为有不少的同学问是否能写一篇相关的文字版,本来没有的也就有了。说起来这是我第二次在 TechDay 上做的分享,四年前第一届 TechDay 不知天高地厚,上去讲了一个《MySQL 最佳实践》,现在想起来那...

BuildKit 镜像构建工具

#暑期创作大赛#快速开始 对于 Kubernetes 部署,请参阅examples/kubernetes。BuildKit 由buildkitd守护进程和buildctl客户端组成。虽然buildctl客户端可用于 Linux、macOS 和 Windows,但buildkitd守护程序目前仅适用于...

HTML5学习笔记三:HTML5语法规则

1.标签要小写2.属性值可加可不加””或”3.可以省略某些标签 html body head tbody4.可以省略某些结束标签 tr td li例:显示效果:5.单标签不用加结束标签img input6.废除的标签font center big7.新添加的标签将在下一HTML5学习笔记中重点阐述。...

2024年,不断突破的一年

迈凯伦F1车队不久前拿下了2024年度总冠军,距离上一次还是二十几年前。在此期间,另一领域内,一个充满革新活力的腕表品牌——RICHARD MILLE理查米尔,正不断发展,与F1运动、帆船、古董车展等领域,共享着对速度与极限的无尽向往。RICHARD MILLE的发展与F1车手们在赛道上的卓越表现交...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...

最快清除数组空值?分享 1 段优质 JS 代码片段!

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿!大家好,我是大澈!本文约 600+ 字,整篇阅读约需 1 分钟。今天分享一段优质 JS 代码片段,用最简洁的代码清除了数组中的空值。老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!const arr...