zoukankan      html  css  js  c++  java
  • <转>php中heredoc与nowdoc的使用方法

    http://www.361way.com/php-heredoc-nowdoc/3008.html

    一、heredoc结构及用法

    Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义。其结构中的变量将被替换,但在 heredoc 结构中含有复杂的变量时要格外小心。其对格式化输出内容时,比较有用 。具体其有以下特点:

    1、开始标记和结束标记使用相同的字符串,通常以大写字母来写。

    2、开始标记后不能出现空格或多余的字符。

    3、结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。

    4、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在heredoc中,变量不需要用连接符.或,来拼接 。

    如:

    function outputhtml()
    {
     //自 PHP 5.3.0 起还可以在 Heredoc 结构中用双引号来声明标识符,所以开头这句也可以写为echo <<<"EOT"
    echo <<<EOT
       <html>
       <head><title>主页</title></head>
       <body>主页内容</body>
       </html>
    EOT;
    }
    outputhtml();
    

      

    这里,就不用像普通的php写法那样,echo "<html>"  echo "<head>……" ,这样不但看上去舒服易读,而且也省去了每行双引号的引用。

    再给出一个变量引用的例子:

    <?php
    $name = '361way运维之路';
    print <<<EOT
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>Untitled Document</title>
    </head>
    <body>
    <!--12321-->
    Hello,$name!
    </body>
    </html>
    EOT;
    ?>
    

      

    二、nowdoc结构及用法

    在 PHP 5.3.0 及其以后的版本中增加了nowdoc结构,其用法和heredoc相同,不同的是Nowdoc 结构是类似于单引号字符串的。nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的 结构是用来声明大段的不用解析的文本类似,nowdoc 结构也有相同的特征。

    一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。

    例如:now结构中复杂变理的示例

    一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。
    
    例如:now结构中复杂变理的示例
    
    <?php
    $str = <<<'EOD'
    Example of string
    spanning multiple lines
    using nowdoc syntax.
    EOD;
    /* 含有变量的更复杂的示例 */
    class foo
    {
        public $foo;
        public $bar;
        function foo()
        {
            $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': x41
    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': x41
    

      

  • 相关阅读:
    夏普比率(Sharpe Ratio)
    资管产品与信托产品区别
    通道业务是什么业务?怎么做到为银行做资产从表内到表外的流动性搬运?
    什么是MBS,ABS和CDO
    Oracle的OFA架构
    oracle-TNS是什么?
    Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
    oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件
    linux下安装oracle
    金融人物
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/6489943.html
Copyright © 2011-2022 走看看