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

相关推荐

  • mysql如何删除表的一行数据

    在mysql中,可以使用DELETE语句配合WHERE子句和LIMIT子句来删除表的一行数据,语法为“DELETE FROM 表名 WHERE 删除条件 LIMIT 1;”;DELETE语句用于删除表中一行或者多行数据,而WHERE子句用于设置删除条件,LIMIT子句用于设置删除数据的行数。 本教程…

    2022年9月21日
    20900
  • 电脑蓝屏代码0x00000116如何解决

    解决方法: 方法一: 1、需要先重启电脑,看看能不能进入系统,进不去就再重启电脑。 2、然后在开机的时候按住键盘“F8”,进入高级选项菜单,在其中选择进入“安全模式” 3、进入安全模式,按下键盘“win+r”打开运行,输入“devmgmt.msc”回车确定。 4、然后在其中展开显示适配器,右键选中下…

    2022年9月15日
    18100
  • html中头部标签是什么

    html中“<head>”是头部标签。head标签用于定义文档的头部,它是所有头部元素的容器;文档的头部描述了文档的各种属性和信息,包括文档的标题、在Web中的位置以及和其他文档的关系等。head中的元素有base、link、meta、script、style、title。 本教程操作环…

    2022年9月15日
    19200
  • 知识库是什么

    知识库是关于产品、服务、部门或主题的自助式在线信息库。为了让大家更好的了解知识库是什么这个问题,下面我们将会围绕:1、企业知识库是什么;2、企业为什么需要知识库;3、知识库的好处有哪些;三点进行展开。 知识库中的数据可以来自任何地方。通常,精通相关主题的贡献者会给知识库增加或扩展内容。内容可以是从你…

    2022年3月18日
    14900
  • HTML的p标签可不可以不用align

    HTML中的p标签可以不用align属性;因为该属性在“HTML 4.01”中已经被废弃,在HTML5中已经不支持该属性了,可以使用css进行替代该属性,该属性用于规定段落中文本的对齐方式。 本教程操作环境:windows10系统、HTML5版本、Dell G3电脑。 HTML的p标签可以不用ali…

    2022年9月2日
    7500
  • php可不可以循环字符串

    php可以循环字符串。在PHP里,字符串可以当作数组来使用,字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应数字的方式来查找和修改;因此也可以像循环数组那样循环字符串),循环字符串的语法“for($i=0;$i<strlen($str);$i++){//循环体语句}”。…

    2022年9月26日
    4900
  • windows证照之星怎么排版一寸

    证照之星排版一寸的方法 1、 打开证照之星 软件,点击主界面左上侧的“系统设置”,选择“打印排版设置”。 2、打开“打印排版设置”之后,点击打印设置对话框的‘新建’按钮。 3、点击“新建”之后,就会出现打印选项的选择栏,如果是用自己的打印机进行打印就选择“本机打印”, 如果需要去外面打印社进行打印的…

    2022年9月26日
    6000
  • cad背景如何调成黑色

    cad背景调成黑色的方法: 1、首先打开cad,右键工具栏,打开“选项” 2、接着进入上方“显示”选项卡。 3、然后打开其中的“颜色”设置。 4、随后选中“背景”选项。 5、再将右边的颜色改为“黑” 6、改完后,点击右下角“应用并关闭”即可将背景调成黑色。 “cad背景如何调成黑色”的内容就介绍到这…

    2022年8月30日
    5800
  • 怎么进行Apache Dubbo反序列化漏洞的分析

    简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 概述 2020年06月23日, Apache Dubbo 官…

    2022年9月10日
    22300
  • 如何实现sqlmap time-based inject的分析

    1. 前言 sql注入如何检测的? 我的回答是:在甲方做安全,sql注入检测还是比较好做的。 1) 报错注入检测。 2) 别做bool的报错注入,误报比较高。 3) 做基于time-based的时间注入,联系运维做上慢日志db记录,监控sleep,benchmark的关键字监控,可以在sleep的时…

    2022年9月21日
    8900
联系我们
关注微信
关注微信
分享本页
返回顶部
PingCode 比 Jira 更好用的研发管理工具。免费试用         文章及站点合作,请添加微:All-FeiFei