我有一个字符串,它由web服务返回,并包含换行符"''n"。当我尝试用nl2br函数输出字符串时,字符串会原样返回,字符串中有"''n"。
有没有可能换行符需要一些特殊的编码才能识别,或者我在这里遗漏了一些琐碎的东西?
输入字符串的十六进制表示
48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e
48617570747374726173736520315c6e416e737072656368706172746e65723a204d6178204d75737465726d616e6e
根据您的十六进制字符串,您的字符串似乎不包含换行符。它只是'n
-两个字节5c6e
,其中5c
是'
,6e
是n
。但新的线路是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换行符
它不会用换行符替换换行符,而是在换行符之前插入换行符。