【问题标题】:Heredoc not printing text in separate linesHeredoc不在单独的行中打印文本
【发布时间】:2021-11-06 10:45:48
【问题描述】:
<?php
echo <<<EOT
First
Second
Third
EOT;
?>

输出:第一第二第三

输出不应该是这样吗-

第一

第二

第三

?

如果不是,那么heredoc 的用途是什么?它与双引号字符串有何不同?

【问题讨论】:

    标签: php string heredoc


    【解决方案1】:

    脚本正在输出

    First
    Second
    Third
    

    但浏览器会将其解释为 HTML 文档,并且默认情况下会换行。改成

    <?php
    echo <<<EOT
    First
    <br>
    Second
    <br>
    Third
    EOT;
    ?>
    

    你会得到你期望的结果。

    它与双引号字符串有何不同?

    Heredocs 可以更轻松地处理包含嵌套引号的字符串,因为您不必对它们进行转义。这在创建带有属性的 HTML 元素时特别方便。比较:

    echo "<a href=\"$url\">Some text</a>";
    

    echo <<<EOT
    <a href="$url">Some text</a>
    EOT;
    

    (是的,我知道你也可以通过在$url 周围加上单引号来解决这个问题——剥猫皮的方法有很多。)

    【讨论】:

    • 浏览器的任何替代品,我可以运行 php 脚本,这样它就不会被视为 html 文档?
    • 只需从 CLI 运行 php scriptname.php,您就会在终端上看到输出。
    • 你也可以使用ideone.com。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多