PHP为何输出\n而非实际换行?终端及文本文件显示异常排查
PHP输出
\n而非实际换行的解决办法 问题情况
在终端查看PHP输出或保存到文本文件时,代码没有生成实际换行,而是直接显示\n字符,不符合预期。
当前错误输出
Lopende tekst...\nVolgende zin.
预期正确输出
Lopende tekst... Volgende zin.
使用的错误代码
<?php $txt="Lopende tekst... Volgende zin."; $txt=preg_replace('/(\.{3})( )([A-Z])/','\\1\n\\3',$txt); echo($txt); ?>
解决方法
问题根源是PHP的字符串解析规则:单引号包裹的字符串中,\n会被当作普通文本字符;双引号包裹的字符串中,\n才会被解析为换行符。
方案1:替换字符串改用双引号
把preg_replace的替换参数从单引号改成双引号即可:
<?php $txt="Lopende tekst... Volgende zin."; $txt=preg_replace('/(\.{3})( )([A-Z])/',"\\1\n\\3",$txt); echo($txt); ?>
方案2:使用PHP_EOL适配多系统
如果需要兼容不同操作系统的换行规则(Windows用\r\n,类Unix系统用\n),可以用PHP内置的PHP_EOL常量替代\n:
<?php $txt="Lopende tekst... Volgende zin."; $txt=preg_replace('/(\.{3})( )([A-Z])/',"\\1".PHP_EOL."\\3",$txt); echo($txt); ?>
内容的提问来源于stack exchange,提问作者Petoetje59
相关产品推荐
相关产品推荐

