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

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

定界符

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

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

分享给朋友:

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

Vue组件通信之props深入详解!

props 是 Vue 组件中一个很重要的概念。它是用来从父组件向子组件传递数据的。为什么需要props?这是因为在Vue中,组件是相互隔离的。每个组件都有自己的作用域,子组件无法直接访问父组件的状态或值。通过props,父组件可以将数据传递给子组件。使用props的步骤:1. 在子组件中定义pro...

【Vue3 基础】05.组件化

这是 Vue3 + Vite + Pinia +TS + Element-Plus 实战系列文档。最近比较忙没什么时间写文章,争取早日把这个系列完结吧~生命周期和模板引用在本章之前,我们通过响应式 api 和声明式渲染,处理了 DOM 的更新,但光是这些,对于一些复杂的需要手动操作 DOM 的情况,...

学无止境:Git 如何优雅地回退代码

来源:https://zhenbianshu.github.io前言从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 L...

vue中router常见的三种传参方式

目录:我们在使用vue开发的过程中使用router跳转的时候肯定会遇到传参的情况;一般情况就三种传参是最常见的;那我们就来看看都有那几种传参方式吧!第一种:{ path: '/mall:id', name: 'Mall', component:...

Vue2的16种传参通信方式

前言先直入主题列出有哪些传参方式,下面再通过事例一一讲解。props(父传子)$emit与v-on (子传父)EventBus (兄弟传参).sync与update: (父子双向)v-model (父子双向)ref$children与$parent$attrs与$listeners (爷孙双向)pr...

Vue从入门到实践 丨Vue-router基本使用

1. 什么是 vue-routervue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。vue-router 的官方文档地址:https://router.vuejs.org/zh/2. vue-router 安装...