Php Heredoc并没有像I';我告诉它应该
我刚刚开始了O'Reilly关于PHP、MySQL和JavaScript的书,我刚刚进入了解heredocs的阶段。书中说他们保留了文字,但我的却没有。我甚至复制了书中的代码,但它仍然没有运行,而且我被告知应该这样做 我希望我的代码在herdoc中保留换行符,但它不想这样做,我能让它这样做的唯一方法是使用“Php Heredoc并没有像I';我告诉它应该,php,heredoc,Php,Heredoc,我刚刚开始了O'Reilly关于PHP、MySQL和JavaScript的书,我刚刚进入了解heredocs的阶段。书中说他们保留了文字,但我的却没有。我甚至复制了书中的代码,但它仍然没有运行,而且我被告知应该这样做 我希望我的代码在herdoc中保留换行符,但它不想这样做,我能让它这样做的唯一方法是使用“”标记 这是我的密码: <?php $author = "Bobby McBobson"; $text = <<<_END This is a Headline.
”标记
这是我的密码:
<?php
$author = "Bobby McBobson";
$text = <<<_END
This is a Headline.
This is the first line.
This is the second line.
- Written by $author.
_END
echo $text;
?>
然而,我希望它的结果是:
This is a Headline.
This is the first line.
<br/>This is the second.
<br/>-Written by Bobby McBobson
这是一个标题。
这是第一行。
这是第二次。
由博比·麦克博森撰写
即使在这里,我也不得不使用
标签(因为明显的原因而分解),所以我认为我缺少了一些基本的东西?
<?php
$author = "Bobby McBobson";
$text = <<<_END
This is a Headline.<br /><br />
This is the first line.<br />
This is the second line.<br />
- Written by $author.<br />
_END;
echo $text;
?>
对我来说效果很好,不要忘记在结束后用分号来关闭变量$text定义。如果你想要一个新行,你真的需要
标签,否则它只会解释为文本。
编辑:实际上,没有HTML的代码在我试用时会保持格式化,但在上会丢失格式化
不知道为什么?换行符会被保留下来,但当以HTML形式编写时,这些换行符会失去其意义;要在HTML中添加格式,应使用
nl2br()
:
您还可以将它们包装在
或其他带有空白的标记中:pre代码>样式。这是从书中引用的。再往前走一页左右
将文本放在多行上通常只是为了方便阅读
使PHP代码更易于阅读,因为一旦它显示在
网页,HTML格式规则接管,空白被抑制
(但是$author仍然替换为变量的值)。那么,为了
例如,如果将这些多行输出示例加载到浏览器中
它们不会显示在多行上,因为所有浏览器都处理
换行符就像空格一样。但是,如果使用浏览器的视图
源功能,您将发现换行符的位置正确,
并且输出确实出现在几行上
herdoc不添加html格式。查看页面的源代码,它在那里看起来是正确的;)我只是用css将它们包装成段落和样式。你需要做echo“$text”吗代码>在shell中是必需的吗?或者,如果您使用浏览器显示HTML,则必须包含
标记(或合适的变体)以将换行符插入正确的位置。或者执行回显“$text”代码>我刚刚添加了
标记来创建换行符(
是新行的HTML标记)我还用分号来结束变量定义我知道你为什么在那里添加了
,但是你应该在回答中解释你为什么这样做,以及为什么OP认为应该工作的东西没有按照他们的预期工作。好吧,Jon,这就是你的意思吗?我刚刚在php sandbox中尝试了你的原始代码(用分号),它保留了格式,而不必添加HTML…不完全是这样-因为如果插入到DB中,或者使用命令行,你不希望这样。解释应该是通过网络浏览器查看的事实。例如,如果包含在
标记中,它会显示得很好。我想我会停止尝试指导某人如何做出一个好的答案。=]在读同一本书时遇到同样的问题。。。一个完美的答案,谢谢。
<?php
$author = "Bobby McBobson";
$text = <<<_END
This is a Headline.<br /><br />
This is the first line.<br />
This is the second line.<br />
- Written by $author.<br />
_END;
echo $text;
?>
echo nl2br($text);