新行字符串" \"没有得到nl2br的认可

时间:2015-02-10 08:08:02

标签: php

我有一个由Web服务返回的字符串,其中包含换行符“\ n”。当我尝试使用nl2br函数输出字符串时,字符串将按原样返回,字符串中包含“\ n”。

新行字符是否可能需要一些特殊的编码才能被识别,或者我在这里遗漏了一些微不足道的东西?

输入字符串的十六进制表示

48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e

3 个答案:

答案 0 :(得分:1)

将所有换行符替换为br标记 最好的解决方案是:

<?php 
function nl2br2($string) { 
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 
return $string; 
} 
?> 

因为每个操作系统都有不同的ASCII字符用于换行符:

windows = \r\n 
unix = \n 
mac = \r 

答案 1 :(得分:1)

48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e

根据您的十六进制字符串,您的字符串似乎不包含换行符。它只是\n - 两个字节5c6e,其中5c\6en。但新行是0a

echo (bin2hex("\n")); // 0a

您可以使用\n<br />替换为str_replace

$string = hex2bin('48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e');
echo str_replace('\n', "<br/>\n", $string);
// please note, that '\n' and "\n" are different in PHP, '\n' - just two symbols, "\n" - one new line symbol.

部分代码:http://3v4l.org/N0FjC#v540

答案 2 :(得分:0)

  

nl2br - 在字符串

中的所有换行符之前插入HTML换行符

它不会用换行符替换换行符,而是先插入换行符。