php中有哪些字符串定界符

php字符串定界符有两种:1、heredoc定界符,在“<<<”运算符之后要提供一个标识符,然后换行,接下来是字符串本身,最后要用前面定义的标识符作为结束标志。2、nowdoc定界符,在“<<<”运算符之后要提供一个被单引号括起来的标识符,然后换行,接下来是字符串本身,最后要用前面定义的标识符作为结束标志。

本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑

PHP定界符

PHP定界符是从PHP4.0版本开始支持的。

定界符用于定义一段格式化的文本,格式化是指文本中的格式将被保留,所以文本中不需要使用定义符。在使用时后接一个标识符,然后是格式化的文本(即字符串),最后使用同样的标识符结束字符串,这段格式化的文本也可以称为长字符串。

为什么使用定界符

因为PHP是一个Web编程语言,在编程过程中难免会遇到使用echo来输出大段的HTML代码或者JavaScript脚本的情况。如果用传统字符串输出的话,肯定要使用大量的转义字符来对字符串中的特殊字符进行转义,比如单引号‘’、双引号“”等等,难免会出现语法错误。

而PHP中定界符能够定义一段较长的字符串,并且可以按照原样输出在其内部的东西,包括换行、缩进等格式,在定界符中任何特殊字符都不需要转义,而且定界符中的变量也能被解析。这也是为什么 PHP 要引入定界符的原因之一。

php中字符串定界符有几种

PHP中有两种定界符:heredoc(双引号定界符)和nowdoc(单引号定界符)

1、“Heredoc”定义方式

heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。

结束标识符可以使用空格或制表符(tab)缩进,此时文档字符串会删除所有缩进。 在 PHP 7.3.0 之前的版本中,结束时所引用的标识符必须在该行的名列前茅列。

而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。

<?php$str = <<<EOF  url:  https://www.yisu.com/EOF;echo $str;?>

php中有哪些字符串定界符

PHP 7.3.0 之后的基础 Heredoc 示例

<?php// 无缩进echo <<<END      a     b    cnEND;// 4 空格缩进echo <<<END      a     b    c    END;

php中有哪些字符串定界符

如果结束标识符的缩进超过内容的任何一行的缩进,则将抛出 ParseError 异常:

示例:结束标识符的缩进不能超过正文的任何一行

<?phpecho <<<END  a bc   END;

以上例程在 PHP 7.3 中的输出:

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4

制表符也可以缩进结束标识符,但是,关于缩进结束标识符和内容, 制表符和空格不能混合使用。在以上任何情况下, 将会抛出 ParseError 异常。 之所以包含这些空白限制,是因为混合制表符和空格来缩进不利于易读性。

示例:内容(空白)和结束标识符的不同缩进

<?php// 以下所有代码都不起作用。// 正文(空格)和结束标记(制表符),不同的缩进{    echo <<<END     a        END;}// 在正文中混合空格和制表符{    echo <<<END        a     END;}// 在结束标记中混合空格和制表符{    echo <<<END          a         END;}

以上例程在 PHP 7.3 中的输出:

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8

内容字符串的结束标识符后面不需要跟分号或者换行符。 例如,从 PHP 7.3.0 开始允许以下代码:

示例:在结束标识符后继续表达式

<?php$values = [<<<ENDa  b    cEND, 'd e f'];var_dump($values);

以上例程在 PHP 7.3 中的输出:

array(2) {  [0] =>  string(11) "a  b    c"  [1] =>  string(5) "d e f"}

2、“Nowdoc”定义方式

就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义,与 SGML 的<![CDATA[ ]]> 结构是用来声明大段的不用解析的文本类似,nowdoc 结构也有相同的特征。

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。

示例:

<?phpecho <<<'EOD'Example of string spanning multiple linesusing nowdoc syntax. Backslashes are always treated literally,e.g. \ and '.EOD;

php中有哪些字符串定界符

<?php/* 含有变量的更复杂的示例 */class foo{    public $foo;    public $bar;    function __construct()    {        $this->foo = 'Foo';        $this->bar = array('Bar1', 'Bar2', 'Bar3');    }}$foo = new foo();$name = 'MyName';echo <<<'EOT'My name is "$name". I am printing some $foo->foo.Now, I am printing some {$foo->bar[1]}.This should not print a capital 'A': x41EOT;?>

php中有哪些字符串定界符

注意:

Nowdoc 结构是在 PHP 5.3.0 中加入的。

“php中有哪些字符串定界符”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

文章标题:php中有哪些字符串定界符,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/30000

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月26日 上午2:02
下一篇 2022年9月26日 上午2:04

相关推荐

  • windows u盘写保护怎么格式化

    u盘写保护格式化的方法: 1、首先右键我们的u盘。 2、接着打开下拉菜单的“属性” 3、然后在“工具”里点击“检查” 4、随后选择“扫描并修复驱动器” 5、检查并修复后,右键u盘,就可以“格式化”了。 到此,关于“windows u盘写保护怎么格式化”的学习就结束了,希望能够解决大家的疑惑。理论与实…

    2022年8月30日
    50100
  • TraceId怎么搭配ELK使用

    需求分析 先分析一下,我们想实现的核心功能是搜索,必然是用 ES 实现,那问题就转换成如何将日志收集并存储到 ES。 日志大家都不陌生了,可以在控制台打印,也可以存入文件,那能不能直接输入 ES 呢,好像没听说过。 这里就要用到 Logstash 来收集日志,Spring 默认的日志框架 Logba…

    2022年9月20日
    66600
  • windows deepl如何翻译文档

    deepl翻译文档的方法 1、进入deepl官网。 2、点击这里的翻译文件,里面可以看到能翻译的文档格式。 3、点击后把你要翻译的文档拖到对话框里或者按照提示上传文件。 4、上传后选择目标语言。 5、点击翻译按钮。 6、等翻译好之后点击下载到本地就可以打开查看了。 以上就是关于“windows de…

    2022年9月26日
    49600
  • windows浩辰cad看图王怎么对比图纸

    浩辰cad看图王对比图纸的方法: 1、首先点击文件,打开任意一张图纸。 2、然后随便选择一张图纸打开。 3、打开后进入“扩展工具”,选择“图纸比较” 4、分别点击浏览选择旧图纸和新图纸。 5、如果我们要保存比较后的图纸,可以勾选保存图形。 6、设置完成后,点击下方的“比较” 7、比较完成后,会出现一…

    2022年9月21日
    42300
  • 电脑键盘不能打字变成快捷键了怎么解决

    电脑键盘不能打字变成快捷键解决方法 名列前茅种方法 最简单的就是重启一下电脑,方便快捷的解决问题。 第二种方法 1,一般情况下是电脑键盘上的“windows“键出问题了,应该是压下后未弹起,可以先检查一下。 “windows“键就是ctrl和alt键之间的 2,WIN键(也就是那个开机四个方块图样的…

    2022年9月6日
    5.6K00
  • ftp服务器搭建部署与C#实现ftp文件上传的方法是什么

    一、简介 FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。…

    2022年9月15日
    83900
  • 怎么用Java比较两个对象的大小

    一. 为什么需要比较对象 上一节介绍了优先级队列,在优先级队列中插入的元素必须能比较大小,如果不能比较大小,如插入两个学生类型的元素,会报ClassCastException异常 示例: class Student{ String name; int age; public Student(Stri…

    2022年9月13日
    78600
  • 计算机系统中操作系统指的是什么

    在计算机系统中,操作系统是核心系统软件;其他的系统要运行在操作系统基础之上,操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互关联的系统软件程序。 本教程操作环境:windows10系统、DELL G3电脑。 在计算机系统中,操作系统是什么 在计算机系统中,操作…

    2022年9月18日
    53500
  • 知识管理对企业发展重要吗

    企业的每一项业务工作都与知识管理有关系,或者在创造知识,或者在使用知识。因此,建立完整的知识管理体系成为企业获得持续竞争优势是企业发展的重要目标。知识管理成为企业在新形式下战略管理的重要内容,知识经济催生了知识管理,而唯有以知识管理来迎接知识经济,才能应对知识经济所带来的挑战。 1、知识管理是网路新…

    2022年3月18日
    34300
  • PDF转Word SDK效果对比

    Hello 大家好,我是小瘪三。我们打工人平时办公免不了要对一些文档格式行转换。我们将探讨几款主流的 PDF 转 Word SDK,分析它们在我们打工人的实际工作中所呈现的优势与劣势。 Solid:老牌的 PDF to Office 转档库,有几十年的积累。 Aspose: 支持非常多的文件格式互转…

    2023年8月31日
    34200
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部