有没有办法在php关闭标记后强制换行?>什么时候嵌入html?

时间:2009-12-15 15:24:17

标签: php configuration code-formatting

我一直在网上搜索没有成功的方法强制php在关闭php标签?>之后输出换行符,这样我的HTML就会在PHP解析之前呈现,以便它在查看页面的html源代码时,它看起来整洁。

我想阻止它删除换行符并导致下一行收尾,从而破坏了页面的格式。是否有特定的php.ini设置我可以更改以禁用此行为?

我的所有代码逻辑文件都从它们的末尾删除了?>所以我不必担心它们会注入额外的换行符,这就是为什么我认为PHP被编码为去掉尾随的新行。

7 个答案:

答案 0 :(得分:15)

理查德这样说:

Hello <? ?>
Jello

... PHP解析后变成了这个:

 Hello Jello


我只是手动添加一个额外的换行符,如下所示:

Hello <? ?>

Jello

......给出这个:

Hello
Jello

答案 1 :(得分:8)

这是一个老问题,但要保留新行,只需在结束标记后放置一个空格。

来源:http://php.net/manual/en/language.basic-syntax.instruction-separation.php

答案 2 :(得分:1)

你可以试试这个:

echo "output \n";

甚至这种不那么优雅的技术:

echo "output
";

请粘贴一些示例代码段以获取更具体的帮助。

答案 3 :(得分:1)

无法改变此行为。为了清楚说明发生了什么,我总是明确地将换行符放在我的模板文件中。

Hello,    

Foo: <?php echo $foo."\n"; ?>
Bar: <?php echo $foo."\n"; ?>

This concludes foo and bar.

输出:

Hello,    

Foo: foo
Bar: bar

This concludes foo and bar.

答案 4 :(得分:0)

你不能总是在php标签之后启动一个块级元素。

有时,您正在为textarea内部生成纯文本。

其他时候,您根本不会生成HTML字符串。

  • SQL语句
  • 电子邮件正文
  • 其他非HTML字符串

答案 5 :(得分:0)

我的强迫性习惯促使我达到类似的目标。可悲的是,没有优雅的解决方案。两个建议:

  1. 输出您想要破坏HTML代码的换行符,如下所示:

    echo 'Hello World'.chr(10);

  2. PHP的'echo'命令不是实际的功能,所以你不能覆盖它;但是,您可以创建一个包装器并使用它:

    function myecho($string, $newline=true)
    {
       echo $string;
       if($newline)
          echo chr(10);
    }
    
  3. 两种解决方案都不优雅,但如果不添加换行符,HTML输出也不会。

答案 6 :(得分:-4)

如果这对您造成了问题,那么您很可能不会编写好的HTML。如果您从HTML中分离出PHP,那么在?>关闭标记之后,只需从块级HTML元素开始。

像这样:

Hello <?php $php_code(); ?> <div>Something else here</div> or even <p>Something else here</p>

哪个会输出:

Hello

Something else here

如果你正在写作:

Hello <?php $php_code(); ?> Something else here

然后你的问题在于如何编写HTML,而不是PHP解析。