换行字符串“; 〃;没有被nl2br重新论证


New line string " " not being recorgnized by nl2br

我有一个字符串,它由web服务返回,并包含换行符"''n"。当我尝试用nl2br函数输出字符串时,字符串会原样返回,字符串中有"''n"。

有没有可能换行符需要一些特殊的编码才能识别,或者我在这里遗漏了一些琐碎的东西?

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

48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e
48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e

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

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

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

$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

将所有换行符替换为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 

nl2br—在字符串中的所有换行符之前插入HTML换行符

它不会用换行符替换换行符,而是在换行符之前插入换行符。