我一直在网上搜索没有成功的方法强制php在关闭php标签?>
之后输出换行符,这样我的HTML就会在PHP解析之前呈现,以便它在查看页面的html源代码时,它看起来整洁。
我想阻止它删除换行符并导致下一行收尾,从而破坏了页面的格式。是否有特定的php.ini
设置我可以更改以禁用此行为?
我的所有代码逻辑文件都从它们的末尾删除了?>
所以我不必担心它们会注入额外的换行符,这就是为什么我认为PHP被编码为去掉尾随的新行。
答案 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字符串。
答案 5 :(得分:0)
我的强迫性习惯促使我达到类似的目标。可悲的是,没有优雅的解决方案。两个建议:
输出您想要破坏HTML代码的换行符,如下所示:
echo 'Hello World'.chr(10);
PHP的'echo'命令不是实际的功能,所以你不能覆盖它;但是,您可以创建一个包装器并使用它:
function myecho($string, $newline=true)
{
echo $string;
if($newline)
echo chr(10);
}
两种解决方案都不优雅,但如果不添加换行符,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解析。