【问题标题】:how to write new lines in CLI and web browser?如何在 CLI 和 Web 浏览器中编写新行?
【发布时间】:2026-01-31 22:30:01
【问题描述】:

我正在从 CLI 命令和 Web 浏览器运行 php 脚本。我需要以两种方式正确显示新行,以便它不会在 CLI 中打印 "<br />" 并在浏览器中显示新行。有谁知道如何为此编写php函数?

感谢您的帮助

【问题讨论】:

    标签: php


    【解决方案1】:

    你可以编写一个函数来根据执行环境返回正确的东西:

    <?php 
    if (PHP_SAPI === 'cli') 
    { 
       return PHP_EOL;
    } 
    else
    {
       return "<BR/>";
    }
    ?> 
    

    【讨论】:

    • 短:function br() { return (PHP_SAPI === 'cli' ? "\n" : "&lt;br /&gt;"); }
    • 我很想使用PHP_EOL 常量而不是"\n" 来确保您获得平台的正确行尾。
    • 另外,@Switz,在回答问题时,我尽量保持清晰而不是简短:)
    • 你们太棒了,这正是我想要的!!
    • 您还可以在脚本开头定义一个变量来存储正确的新行:$br = PHP_SAPI === 'cli' ? "\n" : "&lt;br/&gt;";,然后在需要编写新行时使用该$br
    【解决方案2】:

    您可以将输出的内容类型设置为text/plain,以使浏览器将内容显示为纯文本,就像您将在 CLI 上看到的一样

    header("Content-type: text/plain");
    

    把它放在你输出任何东西之前。

    之后,始终使用\n 换行

    【讨论】:

      【解决方案3】:

      您可以抓取变量中的内容并根据平台(页面/cli)将
      更改为\n

      为此,您可以这样写:

      <?php
          ob_start();
      
          $a = 1;
          $b = 2;
          $c = $a + $b;
          echo "Sum of $a and $b is <br /> $c";
      
          $content = ob_get_clean();
          $type= php_sapi_name();
      
          if ($type == 'cli' || $type == 'cgi-fcgi') {
              str_replace("<br />", "\n", $content);
          }
      
          echo $content;
      
      ?>
      

      【讨论】:

      • 或者反过来:使用\n并在需要时调用nl2br()
      • @Sirko 之前已经回答了这个问题:)
      【解决方案4】:

      简单

      $newline = PHP_SAPI === 'cli' ? "\n" : "<br>";
      

      然后用 {$newline} 替换代码上的所有 \n

      例如:

        echo "Try to Load Json From 1C for all Data{$newline}";
      

      【讨论】:

        【解决方案5】:

        使用\n 创建您的代码。对于基于网络的版本,请在之后申请nl2br

        【讨论】: