MongoDB读取文本中\n不生效,拼接的\n正常的问题修复方案
问题修复:MongoDB获取文本中的
\n无法换行 问题原因
从MongoDB读取的$n->mensagem里的\n是字面量字符(即实际存储的是\和n两个独立字符),而非PHP能识别的换行转义符。而代码中直接拼接的"\n"是PHP解析后的换行符,所以只有后者能触发换行。nl2br函数仅对真正的换行符生效,对字面量\n不起作用。
修复方案
方案一:直接替换字面量\n为换行符
使用str_replace将文本中的字面量\n替换成PHP的换行符:
// 先替换数据库文本里的字面量\n为换行符,再拼接内容 $mensagem = str_replace('\n', "\n", $n->mensagem) . " \n\n\naaaa"; app(Rocketchat::class)->sendMessage( $n->getAlvo(), $mensagem );
方案二:去除转义符(适用于存储时多转义的情况)
如果MongoDB中的文本是因为存入时被额外转义(比如存储的是\\n),可以用stripslashes去除转义:
$mensagem = stripslashes($n->mensagem) . " \n\n\naaaa"; app(Rocketchat::class)->sendMessage( $n->getAlvo(), $mensagem );
注意:
stripslashes会处理所有转义字符(如\"转成"),如果你的文本中有其他需要保留的转义内容,优先用方案一。
内容的提问来源于stack exchange,提问作者Guilherme
相关产品推荐
相关产品推荐

