PHP - String中的换行符不起作用

时间:2015-09-11 11:48:09

标签: php

我有一个包含字符串的数组。字符串应有换行符。我的代码生成的文本不是标签。如何在HTML中创建一个创建换行符的标签?

<?php return array(
  ....
  'subtitle'    => nl2br("My Sentence shall have a \n line break right there") ,
 ...
);


 <title><?php echo htmlspecialchars($CONFIG['subtitle']); ?></title>

结果

   My Sentence shall have a <br> line break right there

4 个答案:

答案 0 :(得分:1)

htmlspecialchars不执行

  

&#34; \ n&#34; =&GT; &#34;&LT峰; br /&GT;&#34;

http://php.net/htmlspecialchars

  

执行的翻译是:

'&' (ampersand) becomes '&amp;'
'"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
"'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set.
'<' (less than) becomes '&lt;'
'>' (greater than) becomes '&gt;'

编辑:正如下面的评论所说,http://php.net/nl2br是最佳解决方案。

您需要使用str替换或正则表达式替换或其他东西: http://php.net/manual/en/function.str-replace.php

答案 1 :(得分:1)

使用以下代码更改您的代码:

<?php return array(
  ....
  'subtitle'    => "My Sentence shall have a \n line break right there",
 ...
);


 <title><?php echo nl2br(htmlspecialchars($CONFIG['subtitle'])); ?></title>

答案 2 :(得分:1)

正如大多数答案所示,请删除htmlspecialchars部分。此外,对于不仅仅识别\n的环境,您的\r\n应替换为\n。更新的代码应如下所示:

<?php return array(
  ....
  'subtitle'    => nl2br("My Sentence shall have a \r\n line break right there") ,
 ...
);


 <title><?php echo $CONFIG['subtitle']; ?></title>

希望有所帮助。

答案 3 :(得分:0)

如果您跳过htmlspecialchars,则会获得所需的行为

 echo $CONFIG['subtitle'];

它取代了你的标签,因此它们可以用html打印,你不想要那个