zoukankan      html  css  js  c++  java
  • PHP字符串处理 单引号 双引号 heredoc nowdoc 定界符

    ---恢复内容开始---

    2019年2月22日09:49:54

    参考文档:   http://php.net/manual/zh/language.types.string.php#language.types.string.syntax.heredoc

    单引号 ¶
    定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。
    
    要表达一个单引号自身,需在它的前面加个反斜线()来转义。要表达一个反斜线自身,则用两个反斜线(\)。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 
     或者 
    ,并不代表任何特殊含义,就单纯是这两个字符本身。
    双引号 ¶
    如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析:
    
    转义字符
    序列    含义
    
        换行(ASCII 字符集中的 LF 或 0x0A (10))
    
        回车(ASCII 字符集中的 CR 或 0x0D (13))
    	    水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
    v    垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
    e    Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
    f    换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
    \    反斜线
    $    美元标记
    "    双引号
    [0-7]{1,3}    符合该正则表达式序列的是一个以八进制方式来表达的字符
    x[0-9A-Fa-f]{1,2}    符合该正则表达式序列的是一个以十六进制方式来表达的字符
    和单引号字符串一样,转义任何其它字符都会导致反斜线被显示出来。PHP 5.1.1 以前,{$var} 中的反斜线还不会被显示出来。
    Heredoc 结构 ¶
    第三种表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。
    
    结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。
    
    Warning
    要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,比如在 UNIX 和 Mac OS X 系统中是 
    ,
    而结束定界符(可能其后有个分号)之后也必须紧跟一个换行。 如果不遵守该规则导致结束标识不“干净”,PHP 将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP 将会在最后一行产生一个解析错误。 Heredocs 结构不能用来初始化类的属性。自 PHP
    5.3 起,此限制仅对 heredoc 包含变量时有效。
                $code = <<<CODE
    <?php
    $string;
    CODE;
    $string;会是变量
    Nowdoc 结构 ¶
    就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的 <![CDATA[ ]]> 
    结构是用来声明大段的不用解析的文本类似,nowdoc 结构也有相同的特征。 一个 nowdoc 结构也用和 heredocs 结构一样的标记
    <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。
    Heredoc 就像单引号的一样不解析,
                $code = <<<CODE
    <?php
    $string;
    CODE;
    $string;会被解析
    Nowdoc 双引号解析定界符里面的内容
                $code = <<<"CODE"
    <?php
    $string;
    CODE;
     

     OR

                $code = <<<'CODE'
    <?php
    $string;
    CODE;
    $string;不会被解析
  • 相关阅读:
    Entity Framework在WCF中序列化的问题
    OTS
    ClickHouse原理解析与应用实践--摘录
    在docker中安装ogg19
    性能测试指标记录
    docker安装oracle12c记录
    docker安装oracle19c记录
    kudu
    stm32模拟iic从机程序
    STM32启动代码注释
  • 原文地址:https://www.cnblogs.com/zx-admin/p/10416882.html
Copyright © 2011-2022 走看看